Browse Source

Merge shortcuts with trunk.

Reverted some unwanted changes back to the trunk version (e.g. AvalonEdit shouldn't reference Core.Presentation).

I'm committing the result of the merge as a new branch because the shortcuts integration breaks some menus.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/shortcuts2@5231 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
e99bbf561a
  1. 508
      AddIns/ICSharpCode.SharpDevelop.addin
  2. 518
      SharpDevelop.Tests.sln
  3. 426
      SharpDevelop.sln
  4. 215
      data/schemas/AddIn.xsd
  5. BIN
      doc/technotes/Commands API.doc
  6. 33
      doc/technotes/ConditionList.html
  7. 264
      doc/technotes/DoozerList.html
  8. 2
      src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
  9. 2
      src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/FSharpBinding.addin
  10. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Project/PythonBinding.addin
  11. 4
      src/AddIns/BackendBindings/Python/PythonBinding/Test/AddInFileTestFixture.cs
  12. 16
      src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin
  13. 2
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.addin
  14. 2
      src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Addin/ICSharpCode.Data.addin
  15. 2
      src/AddIns/DisplayBindings/HexEditor/Project/HexEditor.addin
  16. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.addin
  17. 62
      src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin
  18. 2
      src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.addin
  19. 10
      src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin
  20. 74
      src/AddIns/Misc/SearchAndReplace/Project/Gui/SearchAndReplaceDialog.cs
  21. 6
      src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.addin
  22. 4
      src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.csproj
  23. 34
      src/AddIns/Misc/ShortcutsManagement/Properties/AssemblyInfo.cs
  24. 63
      src/AddIns/Misc/ShortcutsManagement/Properties/Resources.Designer.cs
  25. 117
      src/AddIns/Misc/ShortcutsManagement/Properties/Resources.resx
  26. 26
      src/AddIns/Misc/ShortcutsManagement/Properties/Settings.Designer.cs
  27. 7
      src/AddIns/Misc/ShortcutsManagement/Properties/Settings.settings
  28. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/16-square-red-remove.png
  29. 215
      src/AddIns/Misc/ShortcutsManagement/Resources/StringResources.resx
  30. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/Thumbs.db
  31. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/add_correction_16x16.gif
  32. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/block_small.png
  33. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/delete_small.png
  34. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/info_big.png
  35. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/info_mid.png
  36. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/info_small.png
  37. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/key_enter.png
  38. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/key_enter_pressed.png
  39. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/plus_small.png
  40. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/search_small.png
  41. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/tick_small.png
  42. BIN
      src/AddIns/Misc/ShortcutsManagement/Resources/warning_small.png
  43. 19
      src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement.addin
  44. 160
      src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement.csproj
  45. BIN
      src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement.snk
  46. 41
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/AdditionConverter.cs
  47. 36
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/BoolToVisibilityConverter.cs
  48. 46
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/GesturesCollectionConverter.cs
  49. 41
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/InputGestureConverter.cs
  50. 34
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/NotNullOrEmptyConverter.cs
  51. 42
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/ProfileToStringConverter.cs
  52. 31
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/ProfilesComboBoxItemStyleSelector.cs
  53. 37
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/ShortcutCategorySubElementsMergedConverter.cs
  54. 30
      src/AddIns/Misc/ShortcutsManagement/Src/Converters/TypeNameConverter.cs
  55. 125
      src/AddIns/Misc/ShortcutsManagement/Src/Data/AddIn.cs
  56. 35
      src/AddIns/Misc/ShortcutsManagement/Src/Data/IShortcutTreeEntry.cs
  57. 119
      src/AddIns/Misc/ShortcutsManagement/Src/Data/IShortcutTreeEntryCloner.cs
  58. 87
      src/AddIns/Misc/ShortcutsManagement/Src/Data/MapTable.cs
  59. 9
      src/AddIns/Misc/ShortcutsManagement/Src/Data/SeparatorData.cs
  60. 235
      src/AddIns/Misc/ShortcutsManagement/Src/Data/Shortcut.cs
  61. 145
      src/AddIns/Misc/ShortcutsManagement/Src/Data/ShortcutCategory.cs
  62. 264
      src/AddIns/Misc/ShortcutsManagement/Src/Data/ShortcutsFinder.cs
  63. 26
      src/AddIns/Misc/ShortcutsManagement/Src/Data/UserGestureProfileAction.cs
  64. 57
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/CreateNewProfilePrompt.xaml
  65. 131
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/CreateNewProfilePrompt.xaml.cs
  66. 92
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/MultiKeyGestureTextBox.xaml
  67. 294
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/MultiKeyGestureTextBox.xaml.cs
  68. 181
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/Resources.xaml
  69. 104
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutManagementWindow.xaml
  70. 225
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutManagementWindow.xaml.cs
  71. 52
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml
  72. 384
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml.cs
  73. 93
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutsTreeView.xaml
  74. 320
      src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutsTreeView.xaml.cs
  75. 90
      src/AddIns/Misc/ShortcutsManagement/Src/Extensions/TextBlockBehavior.cs
  76. 81
      src/AddIns/Misc/ShortcutsManagement/Src/Extensions/TreeViewExtensions.cs
  77. 5
      src/AddIns/Misc/ShortcutsManagement/Themes/Generic.xaml
  78. 1
      src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml
  79. 2
      src/AddIns/Misc/UnitTesting/UnitTesting.addin
  80. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  81. 5
      src/Main/Base/Project/Src/Commands/AutostartCommands.cs
  82. 108
      src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
  83. 23
      src/Main/Base/Project/Src/Commands/ToolsCommands.cs
  84. 48
      src/Main/Base/Project/Src/Gui/Dialogs/TreeViewOptionsDialog.xaml
  85. 3
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonPadContent.cs
  86. 9
      src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs
  87. 22
      src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs
  88. 2
      src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs
  89. 18
      src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs
  90. 12
      src/Main/Core/Project/ICSharpCode.Core.csproj
  91. 8
      src/Main/Core/Project/Src/AddInTree/AddIn/AddIn.cs
  92. 110
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/CommandBindingInfoDescriptor.cs
  93. 76
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/CommandBindingInfoDoozer.cs
  94. 45
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingCategoryDescriptor.cs
  95. 43
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingCategoryDoozer.cs
  96. 90
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingInfoDescriptor.cs
  97. 69
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingInfoDoozer.cs
  98. 41
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/RoutedUICommandDescriptor.cs
  99. 39
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/RoutedUICommandDoozer.cs
  100. 2
      src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs
  101. Some files were not shown because too many files have changed in this diff Show More

508
AddIns/ICSharpCode.SharpDevelop.addin

@ -51,6 +51,247 @@ @@ -51,6 +51,247 @@
</Import>
</Runtime>
<Path name="/SharpDevelop/CommandManager/InputBindingCategories">
<InputBindingCategory id="Test" text="Test">
<InputBindingCategory id="Test" text="Test" />
</InputBindingCategory>
<InputBindingCategory id="ProjectViewer" text="Project viewer" />
<InputBindingCategory id="Project" text="Project" />
<InputBindingCategory id="Debugger" text="Debugger" />
<InputBindingCategory id="Search" text="Search" />
<InputBindingCategory id="MainMenu" text="Main menu" />
<InputBindingCategory id="ContextMenus" text="Context Menus">
<InputBindingCategory id="TextEditor" text="Text Editor">
<InputBindingCategory id="Tabs" text="Tabs" />
<InputBindingCategory id="Refactoring" text="Refactoring" />
</InputBindingCategory>
</InputBindingCategory>
<InputBindingCategory id="Building" text="Building">
<InputBindingCategory id="Building" text="Building" />
</InputBindingCategory>
</Path>
<Path name="/SharpDevelop/CommandManager/MenuLocations">
<MenuLocation menupath="/SharpDevelop/Workbench/MainMenu" categorypaths="/MainMenu" />
<MenuLocation menupath="/SharpDevelop/ViewContent/AvalonEdit/ContextMenu" categorypaths="/ContextMenus/TextEditor" />
<MenuLocation menupath="/SharpDevelop/ViewContent/TextEditor/ContextMenu" categorypaths="/ContextMenus/TextEditor" />
<MenuLocation menupath="/SharpDevelop/ViewContent/DefaultTextEditor/ClassMemberContextMenu" categorypaths="/ContextMenus/TextEditor" />
<MenuLocation menupath="/SharpDevelop/ViewContent/DefaultTextEditor/ClassBookmarkContextMenu" categorypaths="/ContextMenus/TextEditor" />
<MenuLocation menupath="/SharpDevelop/Workbench/OpenFileTab/ContextMenu" categorypaths="/ContextMenus/TextEditor/Tabs" />
<MenuLocation menupath="/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/Common" categorypaths="/ContextMenus/TextEditor/Refactoring" />
<MenuLocation menupath="/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/Parameter" categorypaths="/ContextMenus/TextEditor/Refactoring" />
<MenuLocation menupath="/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/LocalVariable" categorypaths="/ContextMenus/TextEditor/Refactoring" />
<MenuLocation menupath="/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/ParameterDefinition" categorypaths="/ContextMenus/TextEditor/Refactoring" />
<MenuLocation menupath="/SharpDevelop/ViewContent/DefaultTextEditor/Refactoring/LocalVariableDefinition" categorypaths="/ContextMenus/TextEditor/Refactoring" />
</Path>
<Path name="/SharpDevelop/CommandManager/RoutedUICommands">
<RoutedUICommand name="SDTestCommands.Test" text="Create new file" />
<RoutedUICommand name="SDBuildCommands.BuildSolution" text="${res:XML.MainMenu.BuildMenu.BuildSolution}" />
<RoutedUICommand name="SDBuildCommands.RebuildSolution" text="${res:XML.MainMenu.BuildMenu.RebuildSolution}" />
<RoutedUICommand name="SDBuildCommands.CleanSolution" text="${res:XML.MainMenu.BuildMenu.CleanSolution}" />
<RoutedUICommand name="SDBuildCommands.BuildProject" text="${res:XML.MainMenu.BuildMenu.BuildProject}" />
<RoutedUICommand name="SDBuildCommands.RebuildProject" text="${res:XML.MainMenu.BuildMenu.RebuildProject}" />
<RoutedUICommand name="SDBuildCommands.CleanProject" text="${res:XML.MainMenu.BuildMenu.CleanProject}" />
<RoutedUICommand name="SDBuildCommands.AbortBuild" text="${res:XML.MainMenu.BuildMenu.AbortBuild}" />
<RoutedUICommand name="SDBuildCommands.EditConfigurationsCommand" text="${res:XML.MainMenu.BuildMenu.EditConfigurationsPlatforms}" />
<RoutedUICommand name="SDProjectCommands.AddNewProjectToSolution" text="${res:ProjectComponent.ContextMenu.NewProject}" />
<RoutedUICommand name="SDProjectCommands.AddExitingProjectToSolution" text="${res:ProjectComponent.ContextMenu.ExistingProject}" />
<RoutedUICommand name="SDProjectCommands.AddExistingItemToSolution" text="${res:ProjectComponent.ContextMenu.AddItem}" />
<RoutedUICommand name="SDProjectCommands.AddNewSolutionFolderToSolution" text="${res:ProjectComponent.ContextMenu.NewSolutionFolder}" />
<RoutedUICommand name="SDProjectCommands.ShowSelectedProjectBrowserNodeProperties" text="${res:MainWindow.Windows.PropertiesScoutLabel}" />
<RoutedUICommand name="SDProjectCommands.ShowHiddenFilesInProjectBrowser" text="${res:Gui.ProjectBrowser.ShowAllFiles}" />
<RoutedUICommand name="SDProjectCommands.RefreshProjectBrowser" text="${res:AddIns.HtmlHelp2.Refresh}" />
<RoutedUICommand name="SDDebugCommands.Execute" text="${res:XML.MainMenu.RunMenu.Run}" />
<RoutedUICommand name="SDDebugCommands.ExecuteWithoutDebugger" text="${res:XML.MainMenu.DebugMenu.RunWithoutDebug}" />
<RoutedUICommand name="SDDebugCommands.StopDebugging" text="${res:XML.MainMenu.DebugMenu.Stop}" />
<RoutedUICommand name="SDDebugCommands.AttachToProcess" text="${res:XML.MainMenu.DebugMenu.Attach}" />
<RoutedUICommand name="SDDebugCommands.DetachFromProcess" text="${res:XML.MainMenu.DebugMenu.Detach}" />
<RoutedUICommand name="SDDebugCommands.BreakDebugging" text="${res:XML.MainMenu.DebugMenu.Break}" />
<RoutedUICommand name="SDDebugCommands.ContinueDebugging" text="${res:XML.MainMenu.DebugMenu.Continue}" />
<RoutedUICommand name="SDDebugCommands.StepOver" text="${res:XML.MainMenu.DebugMenu.StepOver}" />
<RoutedUICommand name="SDDebugCommands.StepInto" text="${res:XML.MainMenu.DebugMenu.StepInto}" />
<RoutedUICommand name="SDDebugCommands.StepOut" text="${res:XML.MainMenu.DebugMenu.StepOut}" />
<RoutedUICommand name="SDDebugCommands.ToggleBreakpoint" text="${res:XML.MainMenu.DebugMenu.ToggleBreakpoint}" />
<RoutedUICommand name="SDSearchCommands.ToggleBookmark" text="${res:XML.MainMenu.SearchMenu.ToggleBookmark}" />
<RoutedUICommand name="SDSearchCommands.PrevBookmark" text="${res:XML.MainMenu.SearchMenu.PrevBookmark}" />
<RoutedUICommand name="SDSearchCommands.NextBookmark" text="${res:XML.MainMenu.SearchMenu.NextBookmark}" />
<RoutedUICommand name="SDSearchCommands.ClearBookmarks" text="${res:XML.MainMenu.SearchMenu.ClearBookmarks}" />
<RoutedUICommand name="SDSearchCommands.GotoLineNumber" text="${res:XML.MainMenu.SearchMenu.GotoLineNr}" />
<RoutedUICommand name="SDSearchCommands.GotoBrace" text="${res:XML.MainMenu.SearchMenu.GotoBrace}" />
<RoutedUICommand name="SDWindowCommands.SplitView" text="Split view" />
</Path>
<Path name="/SharpDevelop/CommandManager/CommandBindings">
<CommandBindingInfo
command="SDTestCommands.Test"
class="ICSharpCode.SharpDevelop.Commands.TestCommand"
gestures="Ctrl+M"
categories="/Test" />
<CommandBindingInfo
command = "SDProjectCommands.ShowSelectedProjectBrowserNodeProperties"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"
categories="/ProjectViewer" />
<CommandBindingInfo
command="SDBuildCommands.BuildSolution"
class="ICSharpCode.SharpDevelop.Project.Commands.Build"
gestures="F8"
categories="/Building"
/>
<CommandBindingInfo
command="SDBuildCommands.RebuildSolution"
class="ICSharpCode.SharpDevelop.Project.Commands.Rebuild"
gestures="Alt+F8"
categories="/Building"
/>
<CommandBindingInfo
command="SDBuildCommands.CleanSolution"
class="ICSharpCode.SharpDevelop.Project.Commands.Clean"
categories="/Building" />
<CommandBindingInfo
command="SDBuildCommands.BuildProject"
class="ICSharpCode.SharpDevelop.Project.Commands.BuildProject"
gestures="F9"
categories="/Building" />
<CommandBindingInfo
command="SDBuildCommands.RebuildProject"
class="ICSharpCode.SharpDevelop.Project.Commands.RebuildProject"
gestures="Alt+F9"
categories="/Building" />
<CommandBindingInfo
command="SDBuildCommands.CleanProject"
class="ICSharpCode.SharpDevelop.Project.Commands.CleanProject"
categories="/Buildin" />
<CommandBindingInfo
command="SDBuildCommands.AbortBuild"
class="ICSharpCode.SharpDevelop.Project.Commands.AbortBuild"
categories="/Buildin" />
<CommandBindingInfo
command="SDBuildCommands.EditConfigurationsCommand"
class="ICSharpCode.SharpDevelop.Project.Commands.EditConfigurationsCommand"
categories="/Buildin" />
<CommandBindingInfo
command="SDProjectCommands.AddNewProjectToSolution"
class="ICSharpCode.SharpDevelop.Project.Commands.AddNewProjectToSolution"
categories="/Project" />
<CommandBindingInfo
command="SDProjectCommands.AddExitingProjectToSolution"
class="ICSharpCode.SharpDevelop.Project.Commands.AddExitingProjectToSolution"
categories="/Project" />
<CommandBindingInfo
command="SDProjectCommands.AddExistingItemToSolution"
class="ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemToSolution"
categories="/Project" />
<CommandBindingInfo
command="SDProjectCommands.AddNewSolutionFolderToSolution"
class="ICSharpCode.SharpDevelop.Project.Commands.AddNewSolutionFolderToSolution"
categories="/Project" />
<CommandBindingInfo
command="SDDebugCommands.Execute"
class="ICSharpCode.SharpDevelop.Project.Commands.Execute"
gestures="F5"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.ExecuteWithoutDebugger"
class="ICSharpCode.SharpDevelop.Project.Commands.ExecuteWithoutDebugger"
gestures="Ctrl+F5"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.StopDebugging"
class="ICSharpCode.SharpDevelop.Project.Commands.StopDebuggingCommand"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.AttachToProcess"
class="ICSharpCode.SharpDevelop.Project.Commands.AttachToProcessCommand"
categories="/Project" />
<CommandBindingInfo
command="SDDebugCommands.DetachFromProcess"
class="ICSharpCode.SharpDevelop.Project.Commands.DetachFromProcessCommand"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.BreakDebugging"
class="ICSharpCode.SharpDevelop.Project.Commands.BreakDebuggingCommand"
gestures="Ctrl+Alt+B"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.ContinueDebugging"
class="ICSharpCode.SharpDevelop.Project.Commands.ContinueDebuggingCommand"
gestures="Ctrl+Alt+B; Ctrl+Alt+D"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.StepOver"
class="ICSharpCode.SharpDevelop.Project.Commands.StepDebuggingCommand"
gestures="F10"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.StepInto"
class="ICSharpCode.SharpDevelop.Project.Commands.StepIntoDebuggingCommand"
gestures="F11"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.StepOut"
class="ICSharpCode.SharpDevelop.Project.Commands.StepOutDebuggingCommand"
gestures="Shift+F11"
categories="/Debugger" />
<CommandBindingInfo
command="SDDebugCommands.ToggleBreakpoint"
class="ICSharpCode.SharpDevelop.Project.Commands.ToggleBreakpointCommand"
gestures="F7"
categories="/Debugger" />
<CommandBindingInfo
command="SDSearchCommands.ToggleBookmark"
class="ICSharpCode.SharpDevelop.Bookmarks.ToggleBookmark"
gestures="Ctrl+F2"
categories="/Search" />
<CommandBindingInfo
command="SDSearchCommands.PrevBookmark"
class="ICSharpCode.SharpDevelop.Bookmarks.PrevBookmark"
gestures="Alt+F2"
categories="/Search" />
<CommandBindingInfo
command="SDSearchCommands.NextBookmark"
class="ICSharpCode.SharpDevelop.Bookmarks.NextBookmark"
gestures="F2"
categories="/Search" />
<CommandBindingInfo
command="SDSearchCommands.ClearBookmarks"
class="ICSharpCode.SharpDevelop.Bookmarks.ClearBookmarks"
categories="/Search" />
<CommandBindingInfo
command="SDSearchCommands.GotoLineNumber"
class="ICSharpCode.SharpDevelop.DefaultEditor.Commands.GotoLineNumber"
gestures="Ctrl+G"
categories="/Search" />
<CommandBindingInfo
command="SDSearchCommands.GotoBrace"
class="ICSharpCode.SharpDevelop.DefaultEditor.Commands.GotoMatchingBrace"
gestures="Ctrl+B"
categories="/Search" />
</Path>
<Path name = "/SharpDevelop/Workbench/Ambiences">
<Class id = ".NET"
class = "ICSharpCode.SharpDevelop.NetAmbience"/>
@ -73,7 +314,7 @@ @@ -73,7 +314,7 @@
category = "Main"
title = "${res:MainWindow.Windows.ProjectScoutLabel}"
icon = "PadIcons.ProjectBrowser"
shortcut = "Control|Alt|L"
shortcut = "Ctrl+Alt+L"
class = "ICSharpCode.SharpDevelop.Project.ProjectBrowserPad"
defaultPosition = "Left" />
@ -81,7 +322,7 @@ @@ -81,7 +322,7 @@
category = "Main"
title = "${res:MainWindow.Windows.ClassScoutLabel}"
icon = "PadIcons.ClassBrowser"
shortcut = "Control|Shift|C"
shortcut = "Ctrl+Shift+C"
class = "ICSharpCode.SharpDevelop.Gui.ClassBrowser.ClassBrowserPad"
defaultPosition = "Right" />
@ -89,7 +330,7 @@ @@ -89,7 +330,7 @@
category = "Main"
title = "${res:MainWindow.Windows.ToolbarLabel}"
icon = "PadIcons.Toolbar"
shortcut = "Control|Alt|X"
shortcut = "Ctrl+Alt+X"
class = "ICSharpCode.SharpDevelop.Gui.ToolsPad"
defaultPosition = "Left" />
@ -103,7 +344,7 @@ @@ -103,7 +344,7 @@
<Pad id = "ErrorList"
category = "Main"
title = "${res:MainWindow.Windows.ErrorList}"
shortcut = "Control|Alt|K"
shortcut = "Ctrl+Alt+K"
icon = "PadIcons.ErrorList"
class = "ICSharpCode.SharpDevelop.Gui.ErrorListPad"
defaultPosition = "Bottom" />
@ -119,7 +360,7 @@ @@ -119,7 +360,7 @@
category = "Main"
title = "${res:MainWindow.Windows.OutputWindow}"
icon = "PadIcons.Output"
shortcut = "Control|Alt|O"
shortcut = "Ctrl+Alt+O"
class = "ICSharpCode.SharpDevelop.Gui.CompilerMessageView"
defaultPosition = "Bottom" />
@ -135,7 +376,7 @@ @@ -135,7 +376,7 @@
category = "Tools"
title = "${res:MainWindow.Windows.FileScoutLabel}"
icon = "PadIcons.FileBrowser"
shortcut = "Control|Alt|F"
shortcut = "Ctrl+Alt+F"
class = "ICSharpCode.SharpDevelop.Gui.FileScout"
defaultPosition = "Left, Hidden" />
@ -178,17 +419,20 @@ @@ -178,17 +419,20 @@
<ToolbarItem id = "Properties"
icon = "Icons.16x16.PropertiesIcon"
tooltip = "${res:MainWindow.Windows.PropertiesScoutLabel}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"
command = "SDProjectCommands.ShowSelectedProjectBrowserNodeProperties" />
<ToolbarItem id = "PropertySeparator" type = "Separator"/>
<ToolbarItem id = "ShowAll"
type = "CheckBox"
icon = "ProjectBrowser.Toolbar.ShowHiddenFiles"
tooltip = "${res:Gui.ProjectBrowser.ShowAllFiles}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ToggleShowAll"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ToggleShowAll"
command = "SDProjectCommands.ShowHiddenFilesInProjectBrowser" />
<ToolbarItem id = "Refresh"
icon = "ProjectBrowser.Toolbar.Refresh"
tooltip = "${res:AddIns.HtmlHelp2.Refresh}"
class = "ICSharpCode.SharpDevelop.Project.Commands.RefreshProjectBrowser"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.RefreshProjectBrowser"
command = "SDProjectCommands.RefreshProjectBrowser" />
</Condition>
</Path>
@ -202,35 +446,43 @@ @@ -202,35 +446,43 @@
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode">
<MenuItem id = "Build"
label = "${res:XML.MainMenu.BuildMenu.BuildSolution}"
shortcut = "F8"
shortcut = "Ctrl+B,B"
icon = "Icons.16x16.BuildCombine"
class = "ICSharpCode.SharpDevelop.Project.Commands.Build"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.Build"
command = "SDBuildCommands.Build" />
<MenuItem id = "Rebuild"
label = "${res:XML.MainMenu.BuildMenu.RebuildSolution}"
shortcut = "Alt|F8"
class = "ICSharpCode.SharpDevelop.Project.Commands.Rebuild"/>
shortcut = "Alt+F8"
class = "ICSharpCode.SharpDevelop.Project.Commands.Rebuild"
command = "SDBuildCommands.Rebuild" />
<MenuItem id = "Clean"
label = "${res:XML.MainMenu.BuildMenu.CleanSolution}"
class = "ICSharpCode.SharpDevelop.Project.Commands.Clean"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.Clean"
command = "SDBuildCommands.Clean" />
<MenuItem id = "CombineBuildGroupSeparator" type = "Separator"/>
<Condition name="WriteableSolution" action="Disable">
<MenuItem id = "CombineAddMenu" label = "${res:ProjectComponent.ContextMenu.AddMenu}" type = "Menu">
<MenuItem id = "AddNewProjectToSolution"
label = "${res:ProjectComponent.ContextMenu.NewProject}"
icon = "Icons.16x16.NewProjectIcon"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddNewProjectToSolution"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.AddNewProjectToSolution"
command = "SDProjectCommands.AddNewProjectToSolution" />
<MenuItem id = "AddExitingProjectToSolution"
label = "${res:ProjectComponent.ContextMenu.ExistingProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExitingProjectToSolution"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExitingProjectToSolution"
command = "SDProjectCommands.AddExitingProjectToSolution" />
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "AddItem"
label = "${res:ProjectComponent.ContextMenu.AddItem}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemToSolution"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.AddExistingItemToSolution"
command = "SDProjectCommands.AddExistingItemToSolution" />
<MenuItem id = "AddNewSolutionFolderToSolution"
icon = "ProjectBrowser.SolutionFolder.CreateNew"
label = "${res:ProjectComponent.ContextMenu.NewSolutionFolder}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AddNewSolutionFolderToSolution"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.AddNewSolutionFolderToSolution"
command = "SDProjectCommands.AddNewSolutionFolderToSolution" />
</MenuItem>
</Condition>
@ -239,7 +491,8 @@ @@ -239,7 +491,8 @@
label = "${res:XML.MainMenu.EditMenu.Paste}"
icon = "Icons.16x16.PasteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"
command = "" />
<MenuItem id = "Rename"
label = "${res:ProjectComponent.ContextMenu.Rename}"
shortcut = "F2"
@ -248,7 +501,8 @@ @@ -248,7 +501,8 @@
<MenuItem id = "Properties"
icon = "Icons.16x16.PropertiesIcon"
label = "${res:XML.MainMenu.FormatMenu.ShowProperties}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"
command = "SDProjectCommands.ShowSelectedProjectBrowserNodeProperties" />
</Path>
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionFolderNode">
@ -258,6 +512,7 @@ @@ -258,6 +512,7 @@
<Include id="CutPasteRemoveRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutPasteRemoveRename"/>
</Path>
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionItemNode">
<MenuItem id = "OpenFile"
label = "${res:ProjectComponent.ContextMenu.Open}"
@ -274,17 +529,21 @@ @@ -274,17 +529,21 @@
<Include id="CutCopyRemoveRename" path="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutCopyRemoveRename"/>
</Path>
<Path path = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/ProjectNode">
<MenuItem id = "Build project"
label = "${res:ProjectComponent.ContextMenu.Build}"
icon = "Icons.16x16.BuildCurrentSelectedProject"
class = "ICSharpCode.SharpDevelop.Project.Commands.BuildProject"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.BuildProject"
command = "SDBuildCommands.BuildProject" />
<MenuItem id = "Rebuild project"
label = "${res:ProjectComponent.ContextMenu.Rebuild}"
class = "ICSharpCode.SharpDevelop.Project.Commands.RebuildProject"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.RebuildProject"
command = "SDBuildCommands.RebuildProject" />
<MenuItem id = "Clean project"
label = "${res:ProjectComponent.ContextMenu.Clean}"
class = "ICSharpCode.SharpDevelop.Project.Commands.CleanProject"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.CleanProject"
command = "SDBuildCommands.CleanProject" />
<!--<MenuItem id = "Publish project"
label = "${res:XML.MainMenu.BuildMenu.PublishProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.PublishProject"/>-->
@ -315,7 +574,8 @@ @@ -315,7 +574,8 @@
<MenuItem id = "Properties"
icon = "Icons.16x16.PropertiesIcon"
label = "${res:XML.MainMenu.FormatMenu.ShowProperties}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"
command = "SDProjectCommands.ShowSelectedProjectBrowserNodeProperties" />
</Path>
<Path name="/SharpDevelop/Pads/ProjectBrowser/ContextMenu/MissingProjectNode">
@ -440,7 +700,8 @@ @@ -440,7 +700,8 @@
<MenuItem id = "Properties"
icon = "Icons.16x16.PropertiesIcon"
label = "${res:XML.MainMenu.FormatMenu.ShowProperties}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"
command = "SDProjectCommands.ShowSelectedProjectBrowserNodeProperties" />
</ComplexCondition>
</Path>
@ -481,7 +742,8 @@ @@ -481,7 +742,8 @@
type = "Item"
icon = "Icons.16x16.PasteIcon"
loadclasslazy = "false"
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.PasteProjectBrowserNode"
/>
<MenuItem id = "Remove"
label = "${res:Global.RemoveButtonText}"
type = "Item"
@ -494,6 +756,7 @@ @@ -494,6 +756,7 @@
class = "ICSharpCode.SharpDevelop.Project.Commands.RenameEntryEvent"/>
</Path>
<Path name = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/CutCopyPasteDeleteRename">
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
@ -645,7 +908,8 @@ @@ -645,7 +908,8 @@
<MenuItem id = "Properties"
icon = "Icons.16x16.PropertiesIcon"
label = "${res:XML.MainMenu.FormatMenu.ShowProperties}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ShowPropertiesForNode"
command = "SDProjectCommands.ShowSelectedProjectBrowserNodeProperties" />
</ComplexCondition>
</Path>
@ -824,40 +1088,40 @@ @@ -824,40 +1088,40 @@
<ToolbarItem id = "Cut"
icon = "Icons.16x16.CutIcon"
tooltip = "${res:XML.MainMenu.EditMenu.Cut.Description}"
command = "Cut"/>
command = "ApplicationCommands.Cut"/>
<ToolbarItem id = "Copy"
icon = "Icons.16x16.CopyIcon"
tooltip = "${res:XML.MainMenu.EditMenu.Copy.Description}"
command = "Copy"/>
command = "ApplicationCommands.Copy"/>
<ToolbarItem id = "Paste"
icon = "Icons.16x16.PasteIcon"
tooltip = "${res:XML.MainMenu.EditMenu.Paste.Description}"
command = "Paste"/>
command = "ApplicationCommands.Paste"/>
<ToolbarItem id = "Delete"
icon = "Icons.16x16.DeleteIcon"
tooltip = "${res:XML.MainMenu.EditMenu.Delete.Description}"
command = "Delete"/>
command = "ApplicationCommands.Delete"/>
<ToolbarItem id = "UndoRedoSeparator" type = "Separator"/>
<ToolbarItem id = "Undo"
icon = "Icons.16x16.UndoIcon"
tooltip = "${res:XML.MainMenu.EditMenu.Undo.Description}"
command = "Undo"/>
command = "ApplicationCommands.Undo"/>
<ToolbarItem id = "Redo"
icon = "Icons.16x16.RedoIcon"
tooltip = "${res:XML.MainMenu.EditMenu.Redo.Description}"
command = "Redo"/>
command = "ApplicationCommands.Redo"/>
<ToolbarItem id = "CompileSeparator" type = "Separator"/>
<ToolbarItem id = "Compile"
icon = "Icons.16x16.BuildCombine"
tooltip = "${res:XML.MainMenu.RunMenu.Compile.Description}"
class = "ICSharpCode.SharpDevelop.Project.Commands.Build"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.Build" />
<ToolbarItem id = "BuildProject"
icon = "Icons.16x16.BuildCurrentSelectedProject"
tooltip = "${res:XML.MainMenu.RunMenu.BuildProject.Description}"
class = "ICSharpCode.SharpDevelop.Project.Commands.Rebuild"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.Rebuild" />
<ToolbarItem id = "DebuggerSeparator" type = "Separator" />
@ -874,14 +1138,16 @@ @@ -874,14 +1138,16 @@
<ToolbarItem id = "Run"
icon = "Icons.16x16.RunProgramIcon"
tooltip = "${res:XML.MainMenu.RunMenu.Run.Description}"
class = "ICSharpCode.SharpDevelop.Project.Commands.Execute"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.Execute"
/>
</Condition>
<Condition name="DebuggerSupports" debuggersupports = "StartWithoutDebugging">
<ToolbarItem id = "RunWithoutDebugger"
icon = "Icons.16x16.Debug.StartWithoutDebugging"
tooltip = "${res:XML.MainMenu.DebugMenu.RunWithoutDebug.Description}"
class = "ICSharpCode.SharpDevelop.Project.Commands.ExecuteWithoutDebugger"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ExecuteWithoutDebugger"
/>
</Condition>
</Condition>
</Condition>
@ -1141,13 +1407,13 @@ @@ -1141,13 +1407,13 @@
<MenuItem id = "File"
label = "${res:XML.MainMenu.FileMenu.New.File}"
icon = "Icons.16x16.NewDocumentIcon"
shortcut = "Control|N"
shortcut = "Ctrl+N"
class = "ICSharpCode.SharpDevelop.Commands.CreateNewFile"/>
<MenuItem id = "Project"
label = "${res:XML.MainMenu.FileMenu.New.Project}"
icon = "Icons.16x16.NewProjectIcon"
shortcut = "Control|Shift|N"
shortcut = "Ctrl+Shift+N"
class = "ICSharpCode.SharpDevelop.Project.Commands.CreateNewSolution"/>
</MenuItem>
@ -1156,13 +1422,13 @@ @@ -1156,13 +1422,13 @@
<MenuItem id = "File"
label = "${res:XML.MainMenu.FileMenu.Open.File}"
icon = "Icons.16x16.OpenFileIcon"
shortcut = "Control|O"
shortcut = "Ctrl+O"
class = "ICSharpCode.SharpDevelop.Commands.OpenFile"/>
<MenuItem id = "Project"
label = "${res:XML.MainMenu.FileMenu.Open.Project}"
icon = "Icons.16x16.OpenProjectIcon"
shortcut = "Control|Shift|O"
shortcut = "Ctrl+Shift+O"
class = "ICSharpCode.SharpDevelop.Project.Commands.LoadSolution"/>
</MenuItem>
@ -1171,13 +1437,13 @@ @@ -1171,13 +1437,13 @@
<MenuItem id = "CloseFile"
label = "${res:XML.MainMenu.FileMenu.Close.File}"
icon = "Icons.16x16.CloseFileIcon"
shortcut = "Control|F4"
shortcut = "Ctrl+F4"
class ="ICSharpCode.SharpDevelop.Commands.CloseFile"/>
</Condition>
<Condition name = "SolutionOpen" action="Disable">
<MenuItem id = "CloseCombine"
label = "${res:XML.MainMenu.FileMenu.Close.Project}"
shortcut = "Control|Shift|F4"
shortcut = "Ctrl+Shift+F4"
class = "ICSharpCode.SharpDevelop.Project.Commands.CloseSolution"/>
</Condition>
</MenuItem>
@ -1186,7 +1452,7 @@ @@ -1186,7 +1452,7 @@
<Condition name = "WindowActive" activewindow="*" action="Disable">
<MenuItem id = "Reloadfile"
label = "${res:XML.MainMenu.FileMenu.Reload}"
shortcut = "Shift|Control|U"
shortcut = "Ctrl+Shift+U"
class = "ICSharpCode.SharpDevelop.Commands.ReloadFile" />
</Condition>
@ -1196,7 +1462,7 @@ @@ -1196,7 +1462,7 @@
<MenuItem id = "Save"
label = "${res:XML.MainMenu.FileMenu.Save}"
icon = "Icons.16x16.SaveIcon"
shortcut = "Control|S"
shortcut = "Ctrl+S"
class = "ICSharpCode.SharpDevelop.Commands.SaveFile"/>
</Condition>
@ -1210,7 +1476,7 @@ @@ -1210,7 +1476,7 @@
<MenuItem id = "SaveAll"
label = "${res:XML.MainMenu.FileMenu.SaveAll}"
icon = "Icons.16x16.SaveAllIcon"
shortcut = "Control|Shift|S"
shortcut = "Ctrl+Shift+S"
class = "ICSharpCode.SharpDevelop.Commands.SaveAllFiles"/>
</Condition>
@ -1219,7 +1485,7 @@ @@ -1219,7 +1485,7 @@
<MenuItem id = "Print"
label = "${res:XML.MainMenu.FileMenu.Print}"
icon = "Icons.16x16.Print"
shortcut = "Control|P"
shortcut = "Ctrl+P"
command = "Print"/>
<MenuItem id = "PrintPreview"
label = "${res:XML.MainMenu.FileMenu.PrintPreview}"
@ -1256,38 +1522,38 @@ @@ -1256,38 +1522,38 @@
label = "${res:XML.MainMenu.EditMenu.Undo}"
icon = "Icons.16x16.UndoIcon"
type = "Item"
shortcut = "Control|Z"
command = "Undo"/>
shortcut = "Ctrl+Z"
command = "ApplicationCommands.Undo"/>
<MenuItem id = "Redo"
label = "${res:XML.MainMenu.EditMenu.Redo}"
icon = "Icons.16x16.RedoIcon"
type = "Item"
shortcut = "Control|Y"
command = "Redo"/>
shortcut = "Ctrl+Y"
command = "ApplicationCommands.Redo"/>
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "Cut"
label = "${res:XML.MainMenu.EditMenu.Cut}"
icon = "Icons.16x16.CutIcon"
type = "Item"
shortcut = "Control|X"
command = "Cut"/>
shortcut = "Ctrl+X"
command = "ApplicationCommands.Cut"/>
<MenuItem id = "Copy"
label = "${res:XML.MainMenu.EditMenu.Copy}"
icon = "Icons.16x16.CopyIcon"
type = "Item"
shortcut = "Control|C"
command = "Copy"/>
shortcut = "Ctrl+C"
command = "ApplicationCommands.Copy"/>
<MenuItem id = "Paste"
label = "${res:XML.MainMenu.EditMenu.Paste}"
icon = "Icons.16x16.PasteIcon"
type = "Item"
shortcut = "Control|V"
command = "Paste"/>
shortcut = "Ctrl+V"
command = "ApplicationCommands.Paste"/>
<MenuItem id = "Delete"
label = "${res:XML.MainMenu.EditMenu.Delete}"
icon = "Icons.16x16.DeleteIcon"
type = "Item"
command = "Delete"/>
command = "ApplicationCommands.Delete"/>
<MenuItem id = "Separator2" type = "Separator" />
<Condition name = "WindowActive" activewindow="ICSharpCode.SharpDevelop.Editor.ITextEditorProvider" action="Disable">
<MenuItem id = "Insert" label = "${res:XML.MainMenu.EditMenu.Insert}" type="Menu">
@ -1304,7 +1570,7 @@ @@ -1304,7 +1570,7 @@
label = "${res:XML.MainMenu.ToolMenu.InsColor}"
class = "ICSharpCode.SharpDevelop.Editor.Commands.ShowColorDialog"/>
<MenuItem id = "InsertGuid"
shortcut = "Control|Shift|G"
shortcut = "Ctrl+Shift+G"
label = "${res:XML.MainMenu.ToolMenu.InsGUID}"
class = "ICSharpCode.SharpDevelop.Editor.Commands.InsertGuidCommand"/>
</MenuItem>
@ -1312,8 +1578,8 @@ @@ -1312,8 +1578,8 @@
<MenuItem id = "SelectAll"
label = "${res:XML.MainMenu.EditMenu.SelectAll}"
type = "Item"
shortcut = "Control|A"
command = "SelectAll"/>
shortcut = "Ctrl+A"
command = "ApplicationCommands.SelectAll"/>
<MenuItem id = "Separator4" type = "Separator" />
<ComplexCondition action="Disable">
<Or>
@ -1381,30 +1647,36 @@ @@ -1381,30 +1647,36 @@
<Condition name = "SolutionOpen" action="Disable">
<MenuItem id = "Build"
label = "${res:XML.MainMenu.BuildMenu.BuildSolution}"
shortcut = "F8"
icon = "Icons.16x16.BuildCombine"
class = "ICSharpCode.SharpDevelop.Project.Commands.Build"/>
command = "SDBuildCommands.BuildSolution"
inputbindingcategories = "/Test/Test"
/>
<MenuItem id = "Rebuild"
label = "${res:XML.MainMenu.BuildMenu.RebuildSolution}"
shortcut = "Alt|F8"
class = "ICSharpCode.SharpDevelop.Project.Commands.Rebuild"/>
shortcut = "Alt+F8"
class = "ICSharpCode.SharpDevelop.Project.Commands.Rebuild"
command = "SDBuildCommands.RebuildSolution" />
<MenuItem id = "Clean"
label = "${res:XML.MainMenu.BuildMenu.CleanSolution}"
class = "ICSharpCode.SharpDevelop.Project.Commands.Clean"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.Clean"
command = "SDBuildCommands.CleanSolution" />
<Condition name = "ProjectActive" activeproject="*">
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "Build project"
label = "${res:XML.MainMenu.BuildMenu.BuildProject}"
shortcut = "F9"
icon = "Icons.16x16.BuildCurrentSelectedProject"
class = "ICSharpCode.SharpDevelop.Project.Commands.BuildProject"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.BuildProject"
command = "SDBuildCommands.BuildProject" />
<MenuItem id = "Rebuild project"
label = "${res:XML.MainMenu.BuildMenu.RebuildProject}"
shortcut = "Alt|F9"
class = "ICSharpCode.SharpDevelop.Project.Commands.RebuildProject"/>
shortcut = "Alt+F9"
class = "ICSharpCode.SharpDevelop.Project.Commands.RebuildProject"
command = "SDBuildCommands.RebuildProject" />
<MenuItem id = "Clean project"
label = "${res:XML.MainMenu.BuildMenu.CleanProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.CleanProject"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.CleanProject"
command = "SDBuildCommands.CleanProject" />
<!--<MenuItem id = "Publish project"
label = "${res:XML.MainMenu.BuildMenu.PublishProject}"
class = "ICSharpCode.SharpDevelop.Project.Commands.PublishProject"/>-->
@ -1414,21 +1686,28 @@ @@ -1414,21 +1686,28 @@
label="${res:XML.MainMenu.BuildMenu.AbortBuild}"
shortcut="Pause"
class="ICSharpCode.SharpDevelop.Project.Commands.AbortBuild"
loadclasslazy="false"/>
loadclasslazy="false"
command="SDBuildCommands.AbortBuild" />
<MenuItem id = "Separator3" type = "Separator" />
<MenuItem id = "SetConfiguration"
label = "${res:XML.MainMenu.BuildMenu.SetConfiguration}"
type = "Menu">
<MenuItem id = "ConfigurationBuilder" type = "Builder" class = "ICSharpCode.SharpDevelop.Project.Commands.SetConfigurationMenuBuilder"/>
<MenuItem id = "ConfigurationBuilder"
type = "Builder"
class = "ICSharpCode.SharpDevelop.Project.Commands.SetConfigurationMenuBuilder" />
</MenuItem>
<MenuItem id = "SetPlatform"
label = "${res:XML.MainMenu.BuildMenu.SetPlatform}"
type = "Menu">
<MenuItem id = "PlatformBuilder" type = "Builder" class = "ICSharpCode.SharpDevelop.Project.Commands.SetPlatformMenuBuilder"/>
<MenuItem
id = "PlatformBuilder"
type = "Builder"
class = "ICSharpCode.SharpDevelop.Project.Commands.SetPlatformMenuBuilder" />
</MenuItem>
<MenuItem id = "EditConfigurations"
label = "${res:XML.MainMenu.BuildMenu.EditConfigurationsPlatforms}"
class = "ICSharpCode.SharpDevelop.Project.Commands.EditConfigurationsCommand"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.EditConfigurationsCommand"
command = "SDBuildCommands.EditConfigurationsCommand" />
</Condition>
</MenuItem> <!-- end BUILD menu -->
@ -1440,7 +1719,9 @@ @@ -1440,7 +1719,9 @@
label = "${res:XML.MainMenu.RunMenu.Run}"
icon = "Icons.16x16.RunProgramIcon"
shortcut = "F5"
class = "ICSharpCode.SharpDevelop.Project.Commands.Execute"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.Execute"
command = "SDDebugCommands.Execute"
/>
</Condition>
</Condition>
</Condition>
@ -1451,8 +1732,9 @@ @@ -1451,8 +1732,9 @@
<MenuItem id = "RunWithoutDebugger"
label = "${res:XML.MainMenu.DebugMenu.RunWithoutDebug}"
icon = "Icons.16x16.Debug.StartWithoutDebugging"
shortcut = "Control|F5"
class = "ICSharpCode.SharpDevelop.Project.Commands.ExecuteWithoutDebugger"/>
shortcut = "Ctrl+F5"
class = "ICSharpCode.SharpDevelop.Project.Commands.ExecuteWithoutDebugger"
command = "SDDebugCommands.ExecuteWithoutDebugger" />
</Condition>
</Condition>
</Condition>
@ -1462,7 +1744,8 @@ @@ -1462,7 +1744,8 @@
<MenuItem id = "Stop"
label = "${res:XML.MainMenu.DebugMenu.Stop}"
icon = "Icons.16x16.StopProcess"
class = "ICSharpCode.SharpDevelop.Project.Commands.StopDebuggingCommand"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.StopDebuggingCommand"
command = "SDDebugCommands.StopDebugging" />
</Condition>
</Condition>
@ -1470,7 +1753,8 @@ @@ -1470,7 +1753,8 @@
<Condition name="IsProcessRunning" isprocessrunning="False" isdebugging="False" action="Disable">
<MenuItem id = "Attach"
label = "${res:XML.MainMenu.DebugMenu.Attach}"
class = "ICSharpCode.SharpDevelop.Project.Commands.AttachToProcessCommand"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.AttachToProcessCommand"
command = "SDDebugCommands.AttachToProcess" />
</Condition>
</Condition>
@ -1478,7 +1762,8 @@ @@ -1478,7 +1762,8 @@
<Condition name="IsProcessRunning" isdebugging="True" action="Disable">
<MenuItem id = "Detach"
label = "${res:XML.MainMenu.DebugMenu.Detach}"
class = "ICSharpCode.SharpDevelop.Project.Commands.DetachFromProcessCommand"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.DetachFromProcessCommand"
command = "SDDebugCommands.DetachFromProcess" />
</Condition>
</Condition>
@ -1488,15 +1773,17 @@ @@ -1488,15 +1773,17 @@
<MenuItem id = "Break"
label = "${res:XML.MainMenu.DebugMenu.Break}"
icon = "Icons.16x16.Debug.Break"
shortcut = "Control|Alt|B"
class = "ICSharpCode.SharpDevelop.Project.Commands.BreakDebuggingCommand"/>
shortcut = "Ctrl+Alt+B"
class = "ICSharpCode.SharpDevelop.Project.Commands.BreakDebuggingCommand"
command = "SDDebugCommands.BreakDebugging" />
</Condition>
<Condition name="IsProcessRunning" isprocessrunning = "False" isdebugging = "True" action = "Disable">
<MenuItem id = "Continue"
label = "${res:XML.MainMenu.DebugMenu.Continue}"
icon = "Icons.16x16.Debug.Continue"
shortcut = "F6"
class = "ICSharpCode.SharpDevelop.Project.Commands.ContinueDebuggingCommand"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ContinueDebuggingCommand"
command = "SDDebugCommands.ContinueDebugging" />
</Condition>
</Condition>
@ -1507,17 +1794,20 @@ @@ -1507,17 +1794,20 @@
label = "${res:XML.MainMenu.DebugMenu.StepOver}"
icon = "Icons.16x16.Debug.StepOver"
shortcut = "F10"
class = "ICSharpCode.SharpDevelop.Project.Commands.StepDebuggingCommand"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.StepDebuggingCommand"
command = "SDDebugCommands.StepOver" />
<MenuItem id = "Step into"
label = "${res:XML.MainMenu.DebugMenu.StepInto}"
icon = "Icons.16x16.Debug.StepInto"
shortcut = "F11"
class = "ICSharpCode.SharpDevelop.Project.Commands.StepIntoDebuggingCommand"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.StepDebuggingCommand"
command = "SDDebugCommands.StepInto" />
<MenuItem id = "Step out"
label = "${res:XML.MainMenu.DebugMenu.StepOut}"
icon = "Icons.16x16.Debug.StepOut"
shortcut = "Shift|F11"
class = "ICSharpCode.SharpDevelop.Project.Commands.StepOutDebuggingCommand"/>
shortcut = "Shift+F11"
class = "ICSharpCode.SharpDevelop.Project.Commands.StepOutDebuggingCommand"
command = "SDDebugCommands.StepOut" />
</Condition>
</Condition>
@ -1531,29 +1821,30 @@ @@ -1531,29 +1821,30 @@
label = "${res:XML.MainMenu.DebugMenu.ToggleBreakpoint}"
shortcut = "F7"
icon = "Bookmarks.Breakpoint"
class = "ICSharpCode.SharpDevelop.Project.Commands.ToggleBreakpointCommand"/>
class = "ICSharpCode.SharpDevelop.Project.Commands.ToggleBreakpointCommand"
command = "SDDebugCommands.ToggleBreakpoint" />
</ComplexCondition>
</MenuItem> <!-- end DEBUG menu -->
<MenuItem id = "Search" label = "${res:XML.MainMenu.SearchMenu}" type="Menu">
<MenuItem id = "SearchIncremental"
label = "${res:XML.MainMenu.SearchMenu.IncrementalSearch}"
shortcut = "Control|E"
shortcut = "Ctrl+E"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.RunIncrementalSearch"/>
<MenuItem id = "SearchReverseIncremental"
label = "${res:XML.MainMenu.SearchMenu.ReverseIncrementalSearch}"
shortcut = "Control|Shift|E"
shortcut = "Ctrl+Shift+E"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.RunReverseIncrementalSearch"/>
<MenuItem id = "SearchInFilesSeparator" type = "Separator" />
<!-- <Condition name = "WindowActive" activewindow="ICSharpCode.SharpDevelop.Editor.ITextEditorProvider" action="Disable"> -->
<MenuItem id = "ToggleBookmark"
label = "${res:XML.MainMenu.SearchMenu.ToggleBookmark}"
shortcut = "Control|F2"
shortcut = "Ctrl+F2"
icon = "Bookmarks.ToggleMark"
class = "ICSharpCode.SharpDevelop.Bookmarks.ToggleBookmark"/>
<MenuItem id = "PrevBookmark"
label = "${res:XML.MainMenu.SearchMenu.PrevBookmark}"
shortcut = "Alt|F2"
shortcut = "Alt+F2"
icon = "Bookmarks.GotoPrevInFile"
class = "ICSharpCode.SharpDevelop.Bookmarks.PrevBookmark"/>
<MenuItem id = "NextBookmark"
@ -1568,16 +1859,16 @@ @@ -1568,16 +1859,16 @@
<MenuItem id = "Separator2" type = "Separator" />
<MenuItem id = "GotoLineNr"
label = "${res:XML.MainMenu.SearchMenu.Goto}"
shortcut = "Control|G"
shortcut = "Ctrl+G"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.GotoLineNumber"/>
<MenuItem id = "GotoDefinition"
label = "${res:ICSharpCode.NAntAddIn.GotoDefinitionMenuLabel}"
shortcut = "Control|Return"
shortcut = "Ctrl+Return"
icon="Icons.16x16.SelectionArrow"
class = "ICSharpCode.SharpDevelop.Editor.Commands.GoToDefinition"/>
<MenuItem id = "GotoBrace"
label = "${res:XML.MainMenu.SearchMenu.GotoBrace}"
shortcut = "Control|B"
shortcut = "Ctrl+B"
class = "ICSharpCode.SharpDevelop.Editor.Commands.GoToMatchingBrace"/>
<!-- </Condition> -->
</MenuItem>
@ -1610,11 +1901,11 @@ @@ -1610,11 +1901,11 @@
<Condition name = "WindowActive" activewindow="ICSharpCode.SharpDevelop.Editor.ITextEditorProvider" action="Disable">
<MenuItem id = "GenerateCodeAction"
label = "${res:XML.MainMenu.ToolMenu.GenerateCode}"
shortcut = "Alt|Insert"
shortcut = "Alt+Insert"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.GenerateCodeAction"/>
<MenuItem id = "ShowQuickHelp"
label = "${res:XML.MainMenu.ToolMenu.QuickXmlDoc}"
shortcut = "Control|Q"
shortcut = "Ctrl+Q"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.QuickDocumentation"/>
</Condition>
@ -1623,7 +1914,8 @@ @@ -1623,7 +1914,8 @@
<MenuItem id = "Options"
label = "${res:XML.MainMenu.ToolMenu.Options}"
icon = "Icons.16x16.Options"
class = "ICSharpCode.SharpDevelop.Commands.OptionsCommand"/>
class = "ICSharpCode.SharpDevelop.Commands.OptionsCommand"
shortcut = "Ctrl+OemComma" />
</MenuItem> <!-- end TOOLS menu -->
<MenuItem id = "Window" label = "${res:XML.MainMenu.WindowMenu}" type="Menu">
@ -1631,18 +1923,18 @@ @@ -1631,18 +1923,18 @@
<MenuItem id = "NextWindow"
label = "${res:XML.MainMenu.WindowMenu.NxtWindow}"
icon = "Icons.16x16.NextWindowIcon"
shortcut = "Control|Tab"
shortcut = "Ctrl+Tab"
class = "ICSharpCode.SharpDevelop.Commands.SelectNextWindow" />
<MenuItem id = "PrevWindow"
label = "${res:XML.MainMenu.WindowMenu.PrvWindow}"
icon = "Icons.16x16.PrevWindowIcon"
shortcut = "Shift|Control|Tab"
shortcut = "Ctrl+Shift+Tab"
class = "ICSharpCode.SharpDevelop.Commands.SelectPrevWindow" />
<MenuItem id ="NxtPrvSeparator" type = "Separator" />
<MenuItem id = "SplitView"
label = "${res:XML.MainMenu.WindowMenu.Split}"
icon = "Icons.16x16.SplitWindow"
command = "ICSharpCode.SharpDevelop.SharpDevelopRoutedCommands.SplitView"/>
command = "SDWindowCommands.SplitView"/>
<MenuItem id = "CloseAll"
label = "${res:XML.MainMenu.FileMenu.CloseAll}"
icon = "Icons.16x16.CloseAllDocuments"
@ -1659,7 +1951,7 @@ @@ -1659,7 +1951,7 @@
command = "Help"/>
<MenuItem id = "Help"
label = "${res:XML.MainMenu.HelpMenu.Topics}"
shortcut = "Alt|F1"
shortcut = "Alt+F1"
link = "http://wiki.sharpdevelop.net/"/>
<MenuItem id = "Separator1" type = "Separator" />
<MenuItem id = "ViewReadme"
@ -1770,7 +2062,7 @@ @@ -1770,7 +2062,7 @@
<MenuItem id = "Save"
label = "${res:XML.MainMenu.FileMenu.Save}"
icon = "Icons.16x16.SaveIcon"
shortcut = "Control|S"
shortcut = "Ctrl+S"
class = "ICSharpCode.SharpDevelop.Commands.SaveFile"/>
<MenuItem id = "SaveAs"
label = "${res:XML.MainMenu.FileMenu.SaveAs}"
@ -1783,11 +2075,11 @@ @@ -1783,11 +2075,11 @@
<MenuItem id = "Comment"
icon = "Icons.16x16.CommentRegion"
label = "${res:XML.TextAreaContextMenu.CommentUncommentSelection}"
shortcut="Control|OemQuestion"
shortcut="Ctrl+OemQuestion"
class = "ICSharpCode.SharpDevelop.Editor.Commands.CommentRegion"/>
<MenuItem id = "Indent"
label = "${res:XML.TextAreaContextMenu.Indent}"
shortcut = "Control|I"
shortcut = "Ctrl+I"
class = "ICSharpCode.SharpDevelop.Editor.Commands.IndentSelection" />
</Path>
@ -1852,15 +2144,15 @@ @@ -1852,15 +2144,15 @@
<Condition name = "WindowActive" activewindow="ICSharpCode.SharpDevelop.Editor.ITextEditorProvider" action="Disable">
<MenuItem id = "ToggleFolding"
label = "${res:XML.MainMenu.EditMenu.FoldingMenu.ToggleFolding}"
shortcut = "Shift|Control|M"
shortcut = "Ctrl+Shift+M"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ToggleFolding"/>
<MenuItem id = "ToggleAllFoldings"
label = "${res:XML.MainMenu.EditMenu.FoldingMenu.ToggleAllFoldings}"
shortcut = "Shift|Control|L"
shortcut = "Ctrl+Shift+L"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ToggleAllFoldings"/>
<MenuItem id = "ShowDefinitionsOnly"
label = "${res:XML.MainMenu.EditMenu.FoldingMenu.ShowDefinitions}"
shortcut = "Shift|Control|P"
shortcut = "Ctrl+Shift+P"
class = "ICSharpCode.SharpDevelop.DefaultEditor.Commands.ShowDefinitionsOnly"/>
</Condition>
</MenuItem>

518
SharpDevelop.Tests.sln

@ -1,29 +1,32 @@ @@ -1,29 +1,32 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 10
# SharpDevelop 4.0.0.1
# Visual Studio 2010
# SharpDevelop 4.0.0.5216
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.SharpDevelop.Dom.Tests", "src\Main\ICSharpCode.SharpDevelop.Dom\Tests\ICSharpCode.SharpDevelop.Dom.Tests\ICSharpCode.SharpDevelop.Dom.Tests.csproj", "{7DB80259-24D4-46C3-A024-53FF1987733D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Tests", "src\Main\Base\Test\ICSharpCode.SharpDevelop.Tests.csproj", "{4980B743-B32F-4aba-AABD-45E2CAD3568D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "src\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Tests", "src\Main\Core\Test\ICSharpCode.Core.Tests.csproj", "{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
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.Presentation", "src\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
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
@ -33,27 +36,29 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", @@ -33,27 +36,29 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms",
{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.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.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.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", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
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.Widgets", "src\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
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}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
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}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
@ -62,50 +67,50 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{ @@ -62,50 +67,50 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit.Tests", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit.Tests\ICSharpCode.AvalonEdit.Tests.csproj", "{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src\Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NRefactory", "NRefactory", "{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "src\Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "src\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryASTGenerator", "src\Libraries\NRefactory\NRefactoryASTGenerator\NRefactoryASTGenerator.csproj", "{B22522AA-B5BF-4A58-AC6D-D4B45805521F}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "src\Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "src\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "src\Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NRefactory", "NRefactory", "{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "src\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Build.Tasks", "src\Libraries\ICSharpCode.Build.Tasks\Project\ICSharpCode.Build.Tasks.csproj", "{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryASTGenerator", "src\Libraries\NRefactory\NRefactoryASTGenerator\NRefactoryASTGenerator.csproj", "{B22522AA-B5BF-4A58-AC6D-D4B45805521F}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "src\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryTests", "src\Libraries\NRefactory\Test\NRefactoryTests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src\Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit.Tests", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit.Tests\ICSharpCode.AvalonEdit.Tests.csproj", "{6222A3A1-83CE-47A3-A4E4-A018F82D44D8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
@ -114,222 +119,218 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278 @@ -114,222 +119,218 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profiler", "Profiler", "{C4035C32-026F-4158-AF15-113EA1EF1960}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.AddIn", "src\AddIns\Misc\Profiler\Frontend\AddIn\Profiler.AddIn.csproj", "{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}"
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}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1} = {68D5EE3B-0C35-4DF1-BD29-6606851A02C1}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "src\AddIns\Misc\Profiler\Frontend\Controls\Profiler.Controls.csproj", "{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
ProjectSection(ProjectDependencies) = postProject
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controller", "src\AddIns\Misc\Profiler\Controller\Profiler.Controller.csproj", "{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
ProjectSection(ProjectDependencies) = postProject
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.X64Converter", "src\AddIns\Misc\Profiler\X64Converter\Profiler.X64Converter.csproj", "{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}"
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("{0E96FCFA-9DAC-4534-AC18-01A90C368873}") = "Hook", "src\AddIns\Misc\Profiler\Hook\Hook.vcxproj", "{68D5EE3B-0C35-4DF1-BD29-6606851A02C1}"
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}") = "Profiler.Tests", "src\AddIns\Misc\Profiler\Tests\Profiler.Tests\Profiler.Tests.csproj", "{068F9531-5D29-49E0-980E-59982A3A0469}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "src\AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Language Bindings", "Language Bindings", "{E0646C25-36F2-4524-969F-FA621353AB94}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CppBinding", "src\AddIns\BackendBindings\CppBinding\CppBinding\CppBinding.csproj", "{70966F84-74C9-4067-A379-0C674A929233}"
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}") = "CSharpBinding.Tests", "src\AddIns\BackendBindings\CSharpBinding\Tests\CSharpBinding.Tests.csproj", "{52006F3F-3156-45DE-89D8-C4813694FBA4}"
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}") = "VBNetBinding.Tests", "src\AddIns\BackendBindings\VBNetBinding\Test\VBNetBinding.Tests.csproj", "{50A89267-A28B-4DF3-8E62-912E005143B8}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
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}") = "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}
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{6022AC51-B658-4C54-97EF-79187AC65B47}"
ProjectSection(SolutionItems) = postProject
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}") = "WpfDesign.XamlDom", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
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}") = "WpfDesign.Tests", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Tests\WpfDesign.Tests.csproj", "{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
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
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}") = "WpfDesign.AddIn", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
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}") = "WpfDesign", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ILAsmBinding", "src\AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6E59AF58-F635-459A-9A35-C9AC41C00339}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "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}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
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}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
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.Tests", "src\AddIns\BackendBindings\XamlBinding\XamlBinding.Tests\XamlBinding.Tests.csproj", "{F390DA70-1FE1-4715-81A0-389AB010C130}"
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}") = "WixBinding.Tests", "src\AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "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.Tests", "src\AddIns\Debugger\Debugger.Tests\Debugger.Tests.csproj", "{A4C858C8-51B6-4265-A695-A20FCEBA1D19}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "src\AddIns\Debugger\Debugger.AddIn\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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{C7F29FC2-1B03-4CDD-9E30-400F4765FF04}"
ProjectSection(SolutionItems) = postProject
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}") = "ICSharpCode.Data.Addin", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Addin\ICSharpCode.Data.Addin.csproj", "{A9F12710-24E4-46D4-832C-6ECB395B9EAD}"
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}") = "ICSharpCode.Data.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core\ICSharpCode.Data.Core.csproj", "{B7823AE9-4B43-4859-8796-2EBDC116FBB8}"
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}") = "ICSharpCode.Data.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core.UI\ICSharpCode.Data.Core.UI.csproj", "{BAD94D6E-4159-4CB6-B991-486F412D9BB6}"
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}") = "ICSharpCode.Data.EDMDesigner.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core\ICSharpCode.Data.EDMDesigner.Core.csproj", "{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}"
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}") = "ICSharpCode.Data.EDMDesigner.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core.UI\ICSharpCode.Data.EDMDesigner.Core.UI.csproj", "{EEF5E054-4192-4A57-8FBF-E860D808A51D}"
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}") = "ICSharpCode.Data.SQLServer", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.SQLServer\ICSharpCode.Data.SQLServer.csproj", "{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "src\AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "src\AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UsageDataCollector", "UsageDataCollector", "{DEFC8584-BEC3-4921-BD0F-40482E450B7B}"
ProjectSection(SolutionItems) = postProject
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}") = "UsageDataCollector.AddIn", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector.AddIn\UsageDataCollector.AddIn.csproj", "{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}"
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}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
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}") = "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}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
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
@ -339,216 +340,225 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddI @@ -339,216 +340,225 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddI
{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}") = "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}") = "SearchAndReplace.Tests", "src\AddIns\Misc\SearchAndReplace\Test\SearchAndReplace.Tests.csproj", "{A569DCC1-C608-45FD-B770-4F79335EF154}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UsageDataCollector", "UsageDataCollector", "{DEFC8584-BEC3-4921-BD0F-40482E450B7B}"
ProjectSection(SolutionItems) = postProject
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}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
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}") = "UsageDataCollector.AddIn", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector.AddIn\UsageDataCollector.AddIn.csproj", "{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}"
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "src\AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
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
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "src\AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{C7F29FC2-1B03-4CDD-9E30-400F4765FF04}"
ProjectSection(SolutionItems) = postProject
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}") = "ICSharpCode.Data.SQLServer", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.SQLServer\ICSharpCode.Data.SQLServer.csproj", "{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}"
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}") = "ICSharpCode.Data.EDMDesigner.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core.UI\ICSharpCode.Data.EDMDesigner.Core.UI.csproj", "{EEF5E054-4192-4A57-8FBF-E860D808A51D}"
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}") = "ICSharpCode.Data.EDMDesigner.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core\ICSharpCode.Data.EDMDesigner.Core.csproj", "{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}"
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}") = "ICSharpCode.Data.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core.UI\ICSharpCode.Data.Core.UI.csproj", "{BAD94D6E-4159-4CB6-B991-486F412D9BB6}"
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}") = "ICSharpCode.Data.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core\ICSharpCode.Data.Core.csproj", "{B7823AE9-4B43-4859-8796-2EBDC116FBB8}"
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}") = "ICSharpCode.Data.Addin", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Addin\ICSharpCode.Data.Addin.csproj", "{A9F12710-24E4-46D4-832C-6ECB395B9EAD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShortcutsManagement", "src\AddIns\Misc\ShortcutsManagement\ShortcutsManagement.csproj", "{745869FF-80E9-4589-A366-E775D2103843}"
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}") = "Diagrams", "src\AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "src\AddIns\Debugger\Debugger.AddIn\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Tests", "src\AddIns\Debugger\Debugger.Tests\Debugger.Tests.csproj", "{A4C858C8-51B6-4265-A695-A20FCEBA1D19}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
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}") = "WixBinding.Tests", "src\AddIns\BackendBindings\WixBinding\Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "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}") = "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}") = "SettingsEditor", "src\AddIns\DisplayBindings\SettingsEditor\Project\SettingsEditor.csproj", "{85226AFB-CE71-4851-9A75-7EEC663A8E8A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HexEditor", "src\AddIns\DisplayBindings\HexEditor\Project\HexEditor.csproj", "{E618A9CD-A39F-4925-A538-E8A3FEF24E54}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "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}") = "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}") = "WpfDesign", "WpfDesign", "{6022AC51-B658-4C54-97EF-79187AC65B47}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding.Tests", "src\AddIns\BackendBindings\Python\PythonBinding\Test\PythonBinding.Tests.csproj", "{23B517C9-1ECC-4419-A13F-0B7136D085CB}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.AddIn", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
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}") = "WpfDesign.Designer", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryToBooConverter.Tests", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Test\NRefactoryToBooConverter.Tests.csproj", "{C9DE556D-325C-4544-B29F-16A9EB7C9830}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Tests", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Tests\WpfDesign.Tests.csproj", "{943DBBB3-E84E-4CF4-917C-C05AFA8743C1}"
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}") = "WpfDesign.XamlDom", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
ProjectSection(SolutionItems) = postProject
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}") = "ComponentInspector", "src\AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding.Tests", "src\AddIns\BackendBindings\VBNetBinding\Test\VBNetBinding.Tests.csproj", "{50A89267-A28B-4DF3-8E62-912E005143B8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "src\AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding.Tests", "src\AddIns\BackendBindings\CSharpBinding\Tests\CSharpBinding.Tests.csproj", "{52006F3F-3156-45DE-89D8-C4813694FBA4}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.AddIn", "src\AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CppBinding", "src\AddIns\BackendBindings\CppBinding\CppBinding\CppBinding.csproj", "{70966F84-74C9-4067-A379-0C674A929233}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profiler", "Profiler", "{C4035C32-026F-4158-AF15-113EA1EF1960}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage.Tests", "src\AddIns\Misc\CodeCoverage\Test\CodeCoverage.Tests.csproj", "{A5C0E8F8-9D04-46ED-91D6-1DEF1575313B}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Tests", "src\AddIns\Misc\Profiler\Tests\Profiler.Tests\Profiler.Tests.csproj", "{068F9531-5D29-49E0-980E-59982A3A0469}"
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}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
Project("{0E96FCFA-9DAC-4534-AC18-01A90C368873}") = "Hook", "src\AddIns\Misc\Profiler\Hook\Hook.vcxproj", "{68D5EE3B-0C35-4DF1-BD29-6606851A02C1}"
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}") = "Profiler.X64Converter", "src\AddIns\Misc\Profiler\X64Converter\Profiler.X64Converter.csproj", "{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controller", "src\AddIns\Misc\Profiler\Controller\Profiler.Controller.csproj", "{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}"
ProjectSection(ProjectDependencies) = postProject
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "src\AddIns\Misc\Profiler\Frontend\Controls\Profiler.Controls.csproj", "{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}"
ProjectSection(ProjectDependencies) = postProject
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{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}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.AddIn", "src\AddIns\Misc\Profiler\Frontend\AddIn\Profiler.AddIn.csproj", "{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1} = {68D5EE3B-0C35-4DF1-BD29-6606851A02C1}
EndProjectSection
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "src\Tools\Tools.build", "{3DF4060F-5EE0-41CF-8096-F27355FD5511}"
@ -957,122 +967,140 @@ Global @@ -957,122 +967,140 @@ Global
{068F9531-5D29-49E0-980E-59982A3A0469}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{068F9531-5D29-49E0-980E-59982A3A0469}.Release|Any CPU.Build.0 = Release|Any CPU
{068F9531-5D29-49E0-980E-59982A3A0469}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFA7988E-7348-4669-9E9D-27E629C873A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFA7988E-7348-4669-9E9D-27E629C873A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFA7988E-7348-4669-9E9D-27E629C873A2}.Debug|Win32.Build.0 = Debug|Any CPU
{FFA7988E-7348-4669-9E9D-27E629C873A2}.Debug|Win32.ActiveCfg = Debug|Any CPU
{FFA7988E-7348-4669-9E9D-27E629C873A2}.Release|Any CPU.Build.0 = Release|Any CPU
{FFA7988E-7348-4669-9E9D-27E629C873A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFA7988E-7348-4669-9E9D-27E629C873A2}.Release|Win32.Build.0 = Release|Any CPU
{FFA7988E-7348-4669-9E9D-27E629C873A2}.Release|Win32.ActiveCfg = Release|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Debug|Any CPU.Build.0 = Debug|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Debug|Win32.Build.0 = Debug|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Debug|Win32.ActiveCfg = Debug|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Release|Any CPU.Build.0 = Release|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Release|Any CPU.ActiveCfg = Release|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Release|Win32.Build.0 = Release|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Release|Win32.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{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}
{FFA7988E-7348-4669-9E9D-27E629C873A2} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{7DB80259-24D4-46C3-A024-53FF1987733D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4980B743-B32F-4aba-AABD-45E2CAD3568D} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{AD6FAA08-D6F5-4DBA-AF85-F4DA9F40C3B5} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{924EE450-603D-49C1-A8E5-4AFAA31CE6F3} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{80318B5F-A25D-45AB-8A95-EF31D2370A4C} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{8035765F-D51F-4A0C-A746-2FD100E19419} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{6222A3A1-83CE-47A3-A4E4-A018F82D44D8} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{870115DD-960A-4406-A6B9-600BCDC36A03} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{D599885D-E161-4CCE-A66E-7A40C8C4F4CC} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{F3662720-9EA2-4591-BBC6-97361DCE50A9} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{E0646C25-36F2-4524-969F-FA621353AB94} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{C4035C32-026F-4158-AF15-113EA1EF1960} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{068F9531-5D29-49E0-980E-59982A3A0469} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{388E7B64-0393-4EB4-A3E3-5C474F141853} = {E0646C25-36F2-4524-969F-FA621353AB94}
{F390DA70-1FE1-4715-81A0-389AB010C130} = {E0646C25-36F2-4524-969F-FA621353AB94}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {E0646C25-36F2-4524-969F-FA621353AB94}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94}
{6E59AF58-F635-459A-9A35-C9AC41C00339} = {E0646C25-36F2-4524-969F-FA621353AB94}
{CA76F702-5B4E-4918-B8D8-7FF8382434FF} = {E0646C25-36F2-4524-969F-FA621353AB94}
{97B3B514-AB0E-4FE1-89DE-8A945F5112AE} = {E0646C25-36F2-4524-969F-FA621353AB94}
{50A89267-A28B-4DF3-8E62-912E005143B8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{52006F3F-3156-45DE-89D8-C4813694FBA4} = {E0646C25-36F2-4524-969F-FA621353AB94}
{70966F84-74C9-4067-A379-0C674A929233} = {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}
{DEFC8584-BEC3-4921-BD0F-40482E450B7B} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{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}
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{6022AC51-B658-4C54-97EF-79187AC65B47} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{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}
{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}
{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}
{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}
{C7F29FC2-1B03-4CDD-9E30-400F4765FF04} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{A9F12710-24E4-46D4-832C-6ECB395B9EAD} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{B7823AE9-4B43-4859-8796-2EBDC116FBB8} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{BAD94D6E-4159-4CB6-B991-486F412D9BB6} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{EEF5E054-4192-4A57-8FBF-E860D808A51D} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{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}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{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}
{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}
{6022AC51-B658-4C54-97EF-79187AC65B47} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{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}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{943DBBB3-E84E-4CF4-917C-C05AFA8743C1} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{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}
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{EEF5E054-4192-4A57-8FBF-E860D808A51D} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{BAD94D6E-4159-4CB6-B991-486F412D9BB6} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{B7823AE9-4B43-4859-8796-2EBDC116FBB8} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{A9F12710-24E4-46D4-832C-6ECB395B9EAD} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{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}
{DEFC8584-BEC3-4921-BD0F-40482E450B7B} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{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}
{70966F84-74C9-4067-A379-0C674A929233} = {E0646C25-36F2-4524-969F-FA621353AB94}
{52006F3F-3156-45DE-89D8-C4813694FBA4} = {E0646C25-36F2-4524-969F-FA621353AB94}
{50A89267-A28B-4DF3-8E62-912E005143B8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{97B3B514-AB0E-4FE1-89DE-8A945F5112AE} = {E0646C25-36F2-4524-969F-FA621353AB94}
{CA76F702-5B4E-4918-B8D8-7FF8382434FF} = {E0646C25-36F2-4524-969F-FA621353AB94}
{6E59AF58-F635-459A-9A35-C9AC41C00339} = {E0646C25-36F2-4524-969F-FA621353AB94}
{E1B288A2-08EE-4318-8BBB-8AB72C69E33E} = {E0646C25-36F2-4524-969F-FA621353AB94}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{BF38FB72-B380-4196-AF8C-95749D726C61} = {E0646C25-36F2-4524-969F-FA621353AB94}
{7C96B65D-28A5-4F28-A35B-8D83CE831EE8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{F390DA70-1FE1-4715-81A0-389AB010C130} = {E0646C25-36F2-4524-969F-FA621353AB94}
{388E7B64-0393-4EB4-A3E3-5C474F141853} = {E0646C25-36F2-4524-969F-FA621353AB94}
{23B517C9-1ECC-4419-A13F-0B7136D085CB} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{833904AB-3CD4-4071-9B48-5770E44685AA} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{6FA16499-896F-4C02-BB43-1AF5C6C7C713} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{C9DE556D-325C-4544-B29F-16A9EB7C9830} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{068F9531-5D29-49E0-980E-59982A3A0469} = {C4035C32-026F-4158-AF15-113EA1EF1960}
EndGlobalSection
EndGlobal

426
SharpDevelop.sln

@ -1,24 +1,22 @@ @@ -1,24 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.0.0.5201
# SharpDevelop 4.0.0.5216
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", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "src\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.WinForms", "src\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
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", "src\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
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
@ -28,59 +26,61 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sd @@ -28,59 +26,61 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Sd
{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.SharpDevelop.Dom", "src\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj", "{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Widgets", "src\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
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}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
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.Core", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{2A232EF1-EB95-41C6-B63A-C106E0C95D3C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NRefactory", "NRefactory", "{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}"
ProjectSection(SolutionItems) = postProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src\Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryASTGenerator", "src\Libraries\NRefactory\NRefactoryASTGenerator\NRefactoryASTGenerator.csproj", "{B22522AA-B5BF-4A58-AC6D-D4B45805521F}"
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.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}") = "NRefactory", "src\Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
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}") = "AvalonDock", "src\Libraries\AvalonDock\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.AvalonEdit", "src\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj", "{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}"
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}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
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}") = "ICSharpCode.TextEditor", "src\Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
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}") = "Aga.Controls", "src\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj", "{E73BB233-D88B-44A7-A98F-D71EE158381D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TreeView", "src\Libraries\SharpTreeView\ICSharpCode.TreeView\ICSharpCode.TreeView.csproj", "{DDE2A481-8271-4EAC-A330-8FA6A38D13D1}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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
@ -89,188 +89,180 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278 @@ -89,188 +89,180 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{393278
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profiler", "Profiler", "{C4035C32-026F-4158-AF15-113EA1EF1960}"
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}") = "Profiler.AddIn", "src\AddIns\Misc\Profiler\Frontend\AddIn\Profiler.AddIn.csproj", "{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1} = {68D5EE3B-0C35-4DF1-BD29-6606851A02C1}
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{6022AC51-B658-4C54-97EF-79187AC65B47}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "src\AddIns\Misc\Profiler\Frontend\Controls\Profiler.Controls.csproj", "{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
ProjectSection(ProjectDependencies) = postProject
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controller", "src\AddIns\Misc\Profiler\Controller\Profiler.Controller.csproj", "{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
ProjectSection(ProjectDependencies) = postProject
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.X64Converter", "src\AddIns\Misc\Profiler\X64Converter\Profiler.X64Converter.csproj", "{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.AddIn", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{0E96FCFA-9DAC-4534-AC18-01A90C368873}") = "Hook", "src\AddIns\Misc\Profiler\Hook\Hook.vcxproj", "{68D5EE3B-0C35-4DF1-BD29-6606851A02C1}"
EndProject
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}") = "CppBinding", "src\AddIns\BackendBindings\CppBinding\CppBinding\CppBinding.csproj", "{70966F84-74C9-4067-A379-0C674A929233}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
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}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
ProjectSection(SolutionItems) = postProject
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}") = "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}") = "NRefactoryToBooConverter", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
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
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Python.Build.Tasks", "src\AddIns\BackendBindings\Python\Python.Build.Tasks\Project\Python.Build.Tasks.csproj", "{D332F2D1-2CF1-43B7-903C-844BD5211A7E}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
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}") = "ILAsmBinding", "src\AddIns\BackendBindings\ILAsmBinding\Project\ILAsmBinding.csproj", "{6E59AF58-F635-459A-9A35-C9AC41C00339}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\BackendBindings\WixBinding\Project\WixBinding.csproj", "{E1B288A2-08EE-4318-8BBB-8AB72C69E33E}"
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}") = "CSharpBinding", "src\AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
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}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
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}") = "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}
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ClassDiagram", "ClassDiagram", "{BFA3BF26-33BD-4A65-B84D-C7F30D131668}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debugger", "Debugger", "{CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}"
ProjectSection(SolutionItems) = postProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "src\AddIns\Debugger\Debugger.AddIn\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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{C7F29FC2-1B03-4CDD-9E30-400F4765FF04}"
ProjectSection(SolutionItems) = postProject
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}") = "ICSharpCode.Data.Addin", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Addin\ICSharpCode.Data.Addin.csproj", "{A9F12710-24E4-46D4-832C-6ECB395B9EAD}"
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}") = "ICSharpCode.Data.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core\ICSharpCode.Data.Core.csproj", "{B7823AE9-4B43-4859-8796-2EBDC116FBB8}"
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}") = "ICSharpCode.Data.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core.UI\ICSharpCode.Data.Core.UI.csproj", "{BAD94D6E-4159-4CB6-B991-486F412D9BB6}"
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}") = "ICSharpCode.Data.EDMDesigner.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core\ICSharpCode.Data.EDMDesigner.Core.csproj", "{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}"
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}") = "ICSharpCode.Data.EDMDesigner.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core.UI\ICSharpCode.Data.EDMDesigner.Core.UI.csproj", "{EEF5E054-4192-4A57-8FBF-E860D808A51D}"
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}") = "ICSharpCode.Data.SQLServer", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.SQLServer\ICSharpCode.Data.SQLServer.csproj", "{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "src\AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
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}
EndProjectSection
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "src\AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
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}") = "PInvokeAddIn", "src\AddIns\Misc\PInvokeAddIn\Project\PInvokeAddIn.csproj", "{5EEB99CF-EA2B-4733-80A6-CE9192D68170}"
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}") = "RegExpTk", "src\AddIns\Misc\RegExpTk\Project\RegExpTk.csproj", "{64A3E5E6-90BF-47F6-94DF-68C94B62C817}"
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}") = "ResourceToolkit", "src\AddIns\Misc\ResourceToolkit\Project\ResourceToolkit.csproj", "{461606BD-E824-4D0A-8CBA-01810B1F5E02}"
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.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}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
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}") = "SubversionAddIn", "src\AddIns\Misc\SubversionAddIn\Project\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UsageDataCollector", "UsageDataCollector", "{DEFC8584-BEC3-4921-BD0F-40482E450B7B}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UsageDataCollector", "UsageDataCollector", "{DEFC8584-BEC3-4921-BD0F-40482E450B7B}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector.AddIn", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector.AddIn\UsageDataCollector.AddIn.csproj", "{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}"
@ -278,172 +270,185 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector.AddIn", @@ -278,172 +270,185 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector.AddIn",
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ComponentInspector", "ComponentInspector", "{D599885D-E161-4CCE-A66E-7A40C8C4F4CC}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector", "src\AddIns\Misc\ComponentInspector\ComponentInspector\ComponentInspector.csproj", "{000E4F64-5D0D-4EB1-B0BF-1A62ADBC6EAD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UsageDataCollector", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector\UsageDataCollector.csproj", "{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ComponentInspector.Core", "src\AddIns\Misc\ComponentInspector\ComponentInspector.Core\ComponentInspector.Core.csproj", "{E6F4983F-DE41-4AEC-88E7-1FA9AFB4E6FF}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "ComponentInspector.AddIn", "src\AddIns\Misc\ComponentInspector\ComponentInspector.AddIn\ComponentInspector.AddIn.csproj", "{869951D5-A0D6-4DC6-9F1D-E6B9A12AC446}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{F355E45F-F54F-4B42-8916-9A633A392789}"
ProjectSection(SolutionItems) = postProject
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}") = "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}") = "CodeAnalysis", "src\AddIns\Misc\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
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}") = "CodeCoverage", "src\AddIns\Misc\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
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}") = "SourceAnalysis", "src\AddIns\Misc\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "HtmlHelp2JScriptGlobals", "src\AddIns\Misc\HtmlHelp2\JScriptGlobals\HtmlHelp2JScriptGlobals.vbproj", "{E54A5AD2-418D-4A85-BA5E-CD803DE38715}"
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
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HtmlHelp2", "src\AddIns\Misc\HtmlHelp2\Project\HtmlHelp2.csproj", "{918487B7-2153-4618-BBB3-344DBDDF2A2A}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{C7F29FC2-1B03-4CDD-9E30-400F4765FF04}"
ProjectSection(SolutionItems) = postProject
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}") = "ICSharpCode.Data.SQLServer", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.SQLServer\ICSharpCode.Data.SQLServer.csproj", "{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}"
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}") = "ICSharpCode.Data.EDMDesigner.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core.UI\ICSharpCode.Data.EDMDesigner.Core.UI.csproj", "{EEF5E054-4192-4A57-8FBF-E860D808A51D}"
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}") = "ICSharpCode.Data.EDMDesigner.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.EDMDesigner.Core\ICSharpCode.Data.EDMDesigner.Core.csproj", "{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1}"
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}") = "ICSharpCode.Data.Core.UI", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core.UI\ICSharpCode.Data.Core.UI.csproj", "{BAD94D6E-4159-4CB6-B991-486F412D9BB6}"
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}") = "ICSharpCode.Data.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core\ICSharpCode.Data.Core.csproj", "{B7823AE9-4B43-4859-8796-2EBDC116FBB8}"
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}") = "ICSharpCode.Data.Addin", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Addin\ICSharpCode.Data.Addin.csproj", "{A9F12710-24E4-46D4-832C-6ECB395B9EAD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShortcutsManagement", "src\AddIns\Misc\ShortcutsManagement\ShortcutsManagement\ShortcutsManagement.csproj", "{745869FF-80E9-4589-A366-E775D2103843}"
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}") = "Diagrams", "src\AddIns\DisplayBindings\ClassDiagram\DiagramRouter\Diagrams.csproj", "{0991423A-DBF6-4C89-B365-A1DF1EB32E42}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.AddIn", "src\AddIns\Debugger\Debugger.AddIn\Debugger.AddIn.csproj", "{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassDiagramAddin", "src\AddIns\DisplayBindings\ClassDiagram\ClassDiagramAddin\ClassDiagramAddin.csproj", "{5A1354DF-4989-4BB4-BC6B-D627C2E9FA13}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Debugger.Core", "src\AddIns\Debugger\Debugger.Core\Debugger.Core.csproj", "{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassCanvas", "src\AddIns\DisplayBindings\ClassDiagram\ClassCanvas\ClassCanvas.csproj", "{08F772A1-F0BE-433E-8B37-F6522953DB05}"
Project("{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}") = "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}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57}"
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}") = "XmlEditor", "src\AddIns\DisplayBindings\XmlEditor\Project\XmlEditor.csproj", "{DCA2703D-250A-463E-A68A-07ED105AE6BD}"
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}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
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}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
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}") = "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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IconEditor", "src\AddIns\DisplayBindings\IconEditor\IconEditor\IconEditor.csproj", "{DC1CCE11-CB91-40FA-9C47-4D9EB5D67BFD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{6022AC51-B658-4C54-97EF-79187AC65B47}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CppBinding", "src\AddIns\BackendBindings\CppBinding\CppBinding\CppBinding.csproj", "{70966F84-74C9-4067-A379-0C674A929233}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profiler", "Profiler", "{C4035C32-026F-4158-AF15-113EA1EF1960}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign\Project\WpfDesign.csproj", "{66A378A1-E9F4-4AD5-8946-D0EC06C2902F}"
Project("{0E96FCFA-9DAC-4534-AC18-01A90C368873}") = "Hook", "src\AddIns\Misc\Profiler\Hook\Hook.vcxproj", "{68D5EE3B-0C35-4DF1-BD29-6606851A02C1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.X64Converter", "src\AddIns\Misc\Profiler\X64Converter\Profiler.X64Converter.csproj", "{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.AddIn", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controller", "src\AddIns\Misc\Profiler\Controller\Profiler.Controller.csproj", "{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}"
ProjectSection(ProjectDependencies) = postProject
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "src\AddIns\Misc\Profiler\Frontend\Controls\Profiler.Controls.csproj", "{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}"
ProjectSection(ProjectDependencies) = postProject
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.AddIn", "src\AddIns\Misc\Profiler\Frontend\AddIn\Profiler.AddIn.csproj", "{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1} = {68D5EE3B-0C35-4DF1-BD29-6606851A02C1}
EndProjectSection
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "Tools", "src\Tools\Tools.build", "{3DF4060F-5EE0-41CF-8096-F27355FD5511}"
@ -768,101 +773,110 @@ Global @@ -768,101 +773,110 @@ Global
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1}.Debug|Win32.ActiveCfg = Debug|Win32
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1}.Release|Win32.Build.0 = Release|Win32
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1}.Release|Win32.ActiveCfg = Release|Win32
{745869FF-80E9-4589-A366-E775D2103843}.Debug|Any CPU.Build.0 = Debug|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Debug|Win32.Build.0 = Debug|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Debug|Win32.ActiveCfg = Debug|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Release|Any CPU.Build.0 = Release|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Release|Any CPU.ActiveCfg = Release|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Release|Win32.Build.0 = Release|Any CPU
{745869FF-80E9-4589-A366-E775D2103843}.Release|Win32.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{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}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{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}
{E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{D599885D-E161-4CCE-A66E-7A40C8C4F4CC} = {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}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {E5A0F4D8-37FD-4A30-BEB0-4409DC4E0865}
{C4035C32-026F-4158-AF15-113EA1EF1960} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{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}
{70966F84-74C9-4067-A379-0C674A929233} = {E0646C25-36F2-4524-969F-FA621353AB94}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {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}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{DEFC8584-BEC3-4921-BD0F-40482E450B7B} = {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}
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{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}
{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}
{6022AC51-B658-4C54-97EF-79187AC65B47} = {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}
{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}
{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}
{D599885D-E161-4CCE-A66E-7A40C8C4F4CC} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{C7F29FC2-1B03-4CDD-9E30-400F4765FF04} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{A9F12710-24E4-46D4-832C-6ECB395B9EAD} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{B7823AE9-4B43-4859-8796-2EBDC116FBB8} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{BAD94D6E-4159-4CB6-B991-486F412D9BB6} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{EEF5E054-4192-4A57-8FBF-E860D808A51D} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{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}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{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}
{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}
{6022AC51-B658-4C54-97EF-79187AC65B47} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{66A378A1-E9F4-4AD5-8946-D0EC06C2902F} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {6022AC51-B658-4C54-97EF-79187AC65B47}
{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}
{AFE34868-AFA1-4E1C-9450-47AB4BE329D5} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{EEF5E054-4192-4A57-8FBF-E860D808A51D} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{5C70D6AB-0A33-43F9-B8B5-54558C35BBB1} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{BAD94D6E-4159-4CB6-B991-486F412D9BB6} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{B7823AE9-4B43-4859-8796-2EBDC116FBB8} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{A9F12710-24E4-46D4-832C-6ECB395B9EAD} = {C7F29FC2-1B03-4CDD-9E30-400F4765FF04}
{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}
{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}
{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}
{DEFC8584-BEC3-4921-BD0F-40482E450B7B} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{6B1CFE35-DA17-4DEB-9C6E-227E5E251DA0} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{0008FCE9-9EB4-4E2E-979B-553278E5BBA6} = {DEFC8584-BEC3-4921-BD0F-40482E450B7B}
{1D18D788-F7EE-4585-A23B-34DC8EC63CB8} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C} = {CDE0C5A4-2096-48B5-BEA3-74DBA0F0E1EF}
{70966F84-74C9-4067-A379-0C674A929233} = {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}
{D332F2D1-2CF1-43B7-903C-844BD5211A7E} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{8D732610-8FC6-43BA-94C9-7126FD7FE361} = {CA76F702-5B4E-4918-B8D8-7FF8382434FF}
{4AC2D5F1-F671-480C-A075-6BF62B3721B2} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{DBCF20A1-BA13-4582-BFA9-74DE4D987B73} = {97B3B514-AB0E-4FE1-89DE-8A945F5112AE}
{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{BDA49550-5ED1-4C6B-B648-657B2CACD8E0} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {C4035C32-026F-4158-AF15-113EA1EF1960}
{68D5EE3B-0C35-4DF1-BD29-6606851A02C1} = {C4035C32-026F-4158-AF15-113EA1EF1960}
EndGlobalSection
EndGlobal

215
data/schemas/AddIn.xsd

@ -114,10 +114,10 @@ @@ -114,10 +114,10 @@
<!-- !!! INSERT DOOZER LIST !!! -->
<xs:element ref="Class" />
<xs:element ref="CodeCompletionBinding" />
<xs:element ref="CommandBinding" />
<xs:element ref="CustomProperty" />
<xs:element ref="CustomTool" />
<xs:element ref="Debugger" />
<xs:element ref="DialogPanel" />
<xs:element ref="Directory" />
<xs:element ref="DisplayBinding" />
<xs:element ref="EditAction" />
@ -125,14 +125,17 @@ @@ -125,14 +125,17 @@
<xs:element ref="Icon" />
<xs:element ref="Include" />
<xs:element ref="ProjectBinding" />
<xs:element ref="InputBinding" />
<xs:element ref="LanguageBinding" />
<xs:element ref="MenuItem" />
<xs:element ref="OptionPanel" />
<xs:element ref="Pad" />
<xs:element ref="Parser" />
<xs:element ref="ProjectContentRegistry" />
<xs:element ref="RoutedUICommand" />
<xs:element ref="SchemeExtension" />
<xs:element ref="String" />
<xs:element ref="SyntaxMode" />
<xs:element ref="String" />
<xs:element ref="TaskBoundAdditionalLogger" />
<xs:element ref="ToolbarItem" />
</xs:choice>
@ -185,10 +188,10 @@ @@ -185,10 +188,10 @@
<!-- !!! INSERT DOOZER LIST !!! -->
<xs:element ref="Class" />
<xs:element ref="CodeCompletionBinding" />
<xs:element ref="CommandBinding" />
<xs:element ref="CustomProperty" />
<xs:element ref="CustomTool" />
<xs:element ref="Debugger" />
<xs:element ref="DialogPanel" />
<xs:element ref="Directory" />
<xs:element ref="DisplayBinding" />
<xs:element ref="EditAction" />
@ -196,14 +199,17 @@ @@ -196,14 +199,17 @@
<xs:element ref="Icon" />
<xs:element ref="Include" />
<xs:element ref="ProjectBinding" />
<xs:element ref="InputBinding" />
<xs:element ref="LanguageBinding" />
<xs:element ref="MenuItem" />
<xs:element ref="OptionPanel" />
<xs:element ref="Pad" />
<xs:element ref="Parser" />
<xs:element ref="ProjectContentRegistry" />
<xs:element ref="RoutedUICommand" />
<xs:element ref="SchemeExtension" />
<xs:element ref="String" />
<xs:element ref="SyntaxMode" />
<xs:element ref="String" />
<xs:element ref="TaskBoundAdditionalLogger" />
<xs:element ref="ToolbarItem" />
</xs:choice>
@ -309,6 +315,51 @@ @@ -309,6 +315,51 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="CommandBinding">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="command" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of routed UI command which triggers this binding
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="class" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Class implementing System.Window.Input.ICommand or
ICSharpCode.Core class. CanExecute and Executed methods
are used to handle raised event
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="lazy" use="optional">
<xs:annotation>
<xs:documentation>
Use lazy loading. If addin containing binded command is
not loaded yet load asseblies referenced in add-in
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1" />
<xs:enumeration value="0" />
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="CommandBinding" type="CommandBinding">
<xs:annotation>
<xs:documentation>
Creates descriptor containing information about command binding
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="CustomProperty">
<xs:complexContent>
<xs:extension base="AbstractCodon">
@ -441,39 +492,6 @@ @@ -441,39 +492,6 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="DialogPanel">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ComplexCondition" />
<xs:element ref="Condition" />
<xs:element ref="DialogPanel" />
<xs:element ref="Include" />
</xs:choice>
<xs:attribute name="class" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IDialogPanel class. Optional if the page has subpages.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="label" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Caption of the dialog panel.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="DialogPanel" type="DialogPanel">
<xs:annotation>
<xs:documentation>
Creates DefaultDialogPanelDescriptor objects that are used in option dialogs.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="Directory">
<xs:complexContent>
<xs:extension base="AbstractCodon">
@ -669,7 +687,35 @@ @@ -669,7 +687,35 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="ProjectBinding">
<xs:complexType name="InputBinding">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="command" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of routed UI command which is triggered by this binding
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="gesture" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Gesture which triggers this binding
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="InputBinding" type="InputBinding">
<xs:annotation>
<xs:documentation>
Creates descriptor containing information about input binding
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="LanguageBinding">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="guid" use="required" type="xs:string">
@ -796,6 +842,15 @@ @@ -796,6 +842,15 @@
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="command" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
A WPF routed command that is executed when item is clicked.
Currently, this property is supported only for WPF Menus.
Only one of the "class" and "command" attributes can be used on a menu entry.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="link" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
@ -821,6 +876,39 @@ @@ -821,6 +876,39 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="OptionPanel">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ComplexCondition" />
<xs:element ref="Condition" />
<xs:element ref="IOptionPanel" />
<xs:element ref="Include" />
</xs:choice>
<xs:attribute name="class" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IOptionPanel class. Optional if the page has subpages.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="label" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Caption of the dialog panel.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="OptionPanel" type="OptionPanel">
<xs:annotation>
<xs:documentation>
Creates DefaultOptionPanelDescriptor objects that are used in option dialogs.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="Pad">
<xs:complexContent>
<xs:extension base="AbstractCodon">
@ -930,50 +1018,57 @@ @@ -930,50 +1018,57 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="SchemeExtension">
<xs:complexType name="RoutedUICommand">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="scheme" use="required" type="xs:string">
<xs:attribute name="name" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
Routed UI command name
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="class" use="required" type="xs:string">
<xs:attribute name="text" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
Routed UI command displayed name
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="SchemeExtension" type="SchemeExtension">
<xs:element name="RoutedUICommand" type="RoutedUICommand">
<xs:annotation>
<xs:documentation>
Creates browser scheme extensions that can intercept calls on one protocol.
Creates descriptor containing information about routed UI command
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="String">
<xs:complexType name="SchemeExtension">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="text" use="required" type="xs:string">
<xs:attribute name="scheme" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
The string to return.
Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="class" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="String" type="String">
<xs:element name="SchemeExtension" type="SchemeExtension">
<xs:annotation>
<xs:documentation>
Creates a string.
Creates browser scheme extensions that can intercept calls on one protocol.
</xs:documentation>
</xs:annotation>
</xs:element>
@ -1012,6 +1107,26 @@ @@ -1012,6 +1107,26 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="String">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="text" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
The string to return.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="String" type="String">
<xs:annotation>
<xs:documentation>
Creates a string.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="TaskBoundAdditionalLogger">
<xs:complexContent>
<xs:extension base="AbstractCodon">

BIN
doc/technotes/Commands API.doc

Binary file not shown.

33
doc/technotes/ConditionList.html

@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
</head><body>
<h1>Condition List</h1>
<p class="notice">This file was generated by the tool 'BuildAddinDocumentation'.
It is based on SharpDevelop 3.0.0.3062.</p>
It is based on SharpDevelop 4.0.0.4126.</p>
<ul>
<li><a href="#ActiveContentExtension">ActiveContentExtension</a>
<li><a href="#ActiveViewContentUntitled">ActiveViewContentUntitled</a>
@ -26,6 +26,8 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -26,6 +26,8 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<li><a href="#TextContent">TextContent</a>
<li><a href="#WindowActive">WindowActive</a>
<li><a href="#WindowOpen">WindowOpen</a>
<li><a href="#WriteableProject">WriteableProject</a>
<li><a href="#WriteableSolution">WriteableSolution</a>
</ul>
<div>
<h2><a name="ActiveContentExtension">ActiveContentExtension</a></h2>
@ -176,7 +178,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -176,7 +178,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<th colspan=2>comparisonType:</td>
<td>
The mode of the comparison: a field of the System.StringComparison enumeration. The default is
'InvariantCultureIgnoreCase'.
'OrdinalIgnoreCase'.
</td>
</tr>
</table>
@ -213,7 +215,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -213,7 +215,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<th colspan=2>comparisonType:</td>
<td>
The mode of the comparison: a field of the System.StringComparison enumeration. The default is
'InvariantCultureIgnoreCase'.
'OrdinalIgnoreCase'.
</td>
</tr>
</table>
@ -492,4 +494,29 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -492,4 +494,29 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<br><pre>
&lt;Condition name="WindowOpen" openwindow="*"&gt;</pre></p>
</div>
<div>
<h2><a name="WriteableProject">WriteableProject</a></h2>
<p>
Tests if the caller project is writable. If caller is not an IProject it tests
Project.CurrentProject.
</p>
<table>
<tr>
<th colspan=2>Condition name:</td>
<td>ICSharpCode.SharpDevelop.WriteableProjectConditionEvaluator</td>
</tr>
</table>
</div>
<div>
<h2><a name="WriteableSolution">WriteableSolution</a></h2>
<p>
Description of WriteableSolutionEvaluator.
</p>
<table>
<tr>
<th colspan=2>Condition name:</td>
<td>ICSharpCode.SharpDevelop.WriteableSolutionConditionEvaluator</td>
</tr>
</table>
</div>
</body></html>

264
doc/technotes/DoozerList.html

@ -5,28 +5,31 @@ @@ -5,28 +5,31 @@
</head><body>
<h1>Doozer List</h1>
<p class="notice">This file was generated by the tool 'BuildAddinDocumentation'.
It is based on SharpDevelop 3.0.0.3062.</p>
It is based on SharpDevelop 4.0.0.4126.</p>
<ul>
<li><a href="#Class">Class</a>
<li><a href="#CodeCompletionBinding">CodeCompletionBinding</a>
<li><a href="#CommandBinding">CommandBinding</a>
<li><a href="#CustomProperty">CustomProperty</a>
<li><a href="#CustomTool">CustomTool</a>
<li><a href="#Debugger">Debugger</a>
<li><a href="#DialogPanel">DialogPanel</a>
<li><a href="#Directory">Directory</a>
<li><a href="#DisplayBinding">DisplayBinding</a>
<li><a href="#EditAction">EditAction</a>
<li><a href="#FileFilter">FileFilter</a>
<li><a href="#Icon">Icon</a>
<li><a href="#Include">Include</a>
<li><a href="#InputBinding">InputBinding</a>
<li><a href="#LanguageBinding">LanguageBinding</a>
<li><a href="#MenuItem">MenuItem</a>
<li><a href="#OptionPanel">OptionPanel</a>
<li><a href="#Pad">Pad</a>
<li><a href="#Parser">Parser</a>
<li><a href="#ProjectContentRegistry">ProjectContentRegistry</a>
<li><a href="#RoutedUICommand">RoutedUICommand</a>
<li><a href="#SchemeExtension">SchemeExtension</a>
<li><a href="#String">String</a>
<li><a href="#SyntaxMode">SyntaxMode</a>
<li><a href="#String">String</a>
<li><a href="#TaskBoundAdditionalLogger">TaskBoundAdditionalLogger</a>
<li><a href="#ToolbarItem">ToolbarItem</a>
</ul>
@ -70,7 +73,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -70,7 +73,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.CodeCompletionBindingDoozer</td>
<td>ICSharpCode.SharpDevelop.Editor.CodeCompletionBindingDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
@ -103,6 +106,54 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -103,6 +106,54 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
</table>
</div>
<div>
<h2><a name="CommandBinding">CommandBinding</a></h2>
<p>
Creates descriptor containing information about command binding
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.CommandBindingDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>command:</td>
<td class="userequired">required</td>
<td>
Name of routed UI command which triggers this binding
</td>
</tr>
<tr>
<th>class:</td>
<td class="userequired">required</td>
<td>
Class implementing System.Window.Input.ICommand or
ICSharpCode.Core class. CanExecute and Executed methods
are used to handle raised event
</td>
</tr>
<tr>
<th>lazy:</td>
<td class="userequired">optional</td>
<td>
Use lazy loading. If addin containing binded command is
not loaded yet load asseblies referenced in add-in
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/Workbench/CommandBindings</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
CommandBindingDescriptor object
</td>
</tr>
</table>
</div>
<div>
<h2><a name="CustomProperty">CustomProperty</a></h2>
<p>
@ -275,50 +326,6 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -275,50 +326,6 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
</table>
</div>
<div>
<h2><a name="DialogPanel">DialogPanel</a></h2>
<p>
Creates DefaultDialogPanelDescriptor objects that are used in option dialogs.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DialogPanelDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th colspan=2>class:</td>
<td>
Name of the IDialogPanel class. Optional if the page has subpages.
</td>
</tr>
<tr>
<th>label:</td>
<td class="userequired">required</td>
<td>
Caption of the dialog panel.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Children:</td>
<td>
In the SharpDevelop options, option pages can have subpages by specifying them
as children in the AddInTree.
</td>
</tr>
<tr>
<th colspan=2>Usage:</td>
<td>In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
A DefaultDialogPanelDescriptor object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Directory">Directory</a></h2>
<p>
@ -590,6 +597,44 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -590,6 +597,44 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
</table>
</div>
<div>
<h2><a name="InputBinding">InputBinding</a></h2>
<p>
Creates descriptor containing information about input binding
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.InputBindingDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>command:</td>
<td class="userequired">required</td>
<td>
Name of routed UI command which is triggered by this binding
</td>
</tr>
<tr>
<th>gesture:</td>
<td class="userequired">required</td>
<td>
Gesture which triggers this binding
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/Workbench/InputBindings</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
InputBindingDescriptor object
</td>
</tr>
</table>
</div>
<div>
<h2><a name="LanguageBinding">LanguageBinding</a></h2>
<p>
@ -693,6 +738,15 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -693,6 +738,15 @@ It is based on SharpDevelop 3.0.0.3062.</p>
Command class that is run when item is clicked.
</td>
</tr>
<tr>
<th>command:</td>
<td class="userequired">optional</td>
<td>
A WPF routed command that is executed when item is clicked.
Currently, this property is supported only for WPF Menus.
Only one of the "class" and "command" attributes can be used on a menu entry.
</td>
</tr>
<tr>
<th>link:</td>
<td class="userequired">optional</td>
@ -722,7 +776,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -722,7 +776,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<tr>
<th colspan=2>Returns:</td>
<td>
Any ToolStrip* object, depending on the type attribute.
A MenuItemDescriptor object.
</td>
</tr>
<tr>
@ -731,6 +785,50 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -731,6 +785,50 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
</table>
</div>
<div>
<h2><a name="OptionPanel">OptionPanel</a></h2>
<p>
Creates DefaultOptionPanelDescriptor objects that are used in option dialogs.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.OptionPanelDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th colspan=2>class:</td>
<td>
Name of the IOptionPanel class. Optional if the page has subpages.
</td>
</tr>
<tr>
<th>label:</td>
<td class="userequired">required</td>
<td>
Caption of the dialog panel.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Children:</td>
<td>
In the SharpDevelop options, option pages can have subpages by specifying them
as children in the AddInTree.
</td>
</tr>
<tr>
<th colspan=2>Usage:</td>
<td>In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
A DefaultOptionPanelDescriptor object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Pad">Pad</a></h2>
<p>
@ -878,66 +976,77 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -878,66 +976,77 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</table>
</div>
<div>
<h2><a name="SchemeExtension">SchemeExtension</a></h2>
<h2><a name="RoutedUICommand">RoutedUICommand</a></h2>
<p>
Creates browser scheme extensions that can intercept calls on one protocol.
Creates descriptor containing information about routed UI command
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.BrowserDisplayBinding.SchemeExtensionDoozer</td>
<td>ICSharpCode.Core.RoutedUICommandDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>scheme:</td>
<th>name:</td>
<td class="userequired">required</td>
<td>
Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
Routed UI command name
</td>
</tr>
<tr>
<th>class:</td>
<th>text:</td>
<td class="userequired">required</td>
<td>
Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
Routed UI command displayed name
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/Views/Browser/SchemeExtensions</td>
<td>Only in /SharpDevelop/Workbench/CommandBindings</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
An SchemeExtensionDescriptor object that exposes the protocol name and ISchemeExtension object (lazy-loading).
RoutedUICommandDescriptor object
</td>
</tr>
</table>
</div>
<div>
<h2><a name="String">String</a></h2>
<h2><a name="SchemeExtension">SchemeExtension</a></h2>
<p>
Creates a string.
Creates browser scheme extensions that can intercept calls on one protocol.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.StringDoozer</td>
<td>ICSharpCode.SharpDevelop.BrowserDisplayBinding.SchemeExtensionDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>text:</td>
<th>scheme:</td>
<td class="userequired">required</td>
<td>
The string to return.
Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
</td>
</tr>
<tr>
<th>class:</td>
<td class="userequired">required</td>
<td>
Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/Views/Browser/SchemeExtensions</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
The string specified by 'text', passed through the StringParser.
An SchemeExtensionDescriptor object that exposes the protocol name and ISchemeExtension object (lazy-loading).
</td>
</tr>
</table>
@ -989,6 +1098,33 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -989,6 +1098,33 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
</table>
</div>
<div>
<h2><a name="String">String</a></h2>
<p>
Creates a string.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.Core.StringDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>text:</td>
<td class="userequired">required</td>
<td>
The string to return.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Returns:</td>
<td>
The string specified by 'text', passed through the StringParser.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="TaskBoundAdditionalLogger">TaskBoundAdditionalLogger</a></h2>
<p>

2
src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin

@ -175,7 +175,7 @@ @@ -175,7 +175,7 @@
category = "Main"
title = "${res:ICSharpCode.BooInterpreter}"
icon = "Boo.ProjectIcon"
shortcut = "Control|Shift|B"
shortcut = "Ctrl+Shift+B"
class = "Grunwald.BooBinding.InteractiveInterpreterPad"
defaultPosition = "Bottom, Hidden" />
</Path>

2
src/AddIns/BackendBindings/FSharp/FSharpBinding/Project/FSharpBinding.addin

@ -109,7 +109,7 @@ @@ -109,7 +109,7 @@
<Condition name = "ProjectActive" activeproject="F#">
<MenuItem id = "SendToFSharpInteractive"
label = "Send To F# Interactive"
shortcut = "Alt|Return"
shortcut = "Alt+Return"
class= "FSharpBinding.SentToFSharpInteractive"/>
</Condition>
</Path>

4
src/AddIns/BackendBindings/Python/PythonBinding/Project/PythonBinding.addin

@ -62,12 +62,12 @@ @@ -62,12 +62,12 @@
icon="Icons.16x16.RunProgramIcon"
class="ICSharpCode.PythonBinding.RunDebugPythonCommand"
label="${res:XML.MainMenu.RunMenu.Run}"
shortcut="Control|Shift|R"/>
shortcut="Ctrl+Shift+R"/>
<MenuItem id="RunWithoutDebugger"
icon="Icons.16x16.Debug.StartWithoutDebugging"
class="ICSharpCode.PythonBinding.RunPythonCommand"
label="${res:XML.MainMenu.DebugMenu.RunWithoutDebug}"
shortcut="Control|Shift|W"/>
shortcut="Ctrl+Shift+W"/>
</Condition>
<Condition name="IsProcessRunning" isdebugging="True" action="Disable">
<MenuItem id="Stop"

4
src/AddIns/BackendBindings/Python/PythonBinding/Test/AddInFileTestFixture.cs

@ -253,7 +253,7 @@ namespace PythonBinding.Tests @@ -253,7 +253,7 @@ namespace PythonBinding.Tests
[Test]
public void PythonRunMenuItemShortcut()
{
Assert.AreEqual("Control|Shift|R", pythonRunMenuItemCodon["shortcut"]);
Assert.AreEqual("Ctrl+Shift+R", pythonRunMenuItemCodon["shortcut"]);
}
[Test]
@ -712,7 +712,7 @@ namespace PythonBinding.Tests @@ -712,7 +712,7 @@ namespace PythonBinding.Tests
[Test]
public void PythonRunWithoutDebuggerMenuItemShortcut()
{
Assert.AreEqual("Control|Shift|W", pythonWithoutDebuggerRunMenuItemCodon["shortcut"]);
Assert.AreEqual("Ctrl+Shift+W", pythonWithoutDebuggerRunMenuItemCodon["shortcut"]);
}
[Test]

16
src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin

@ -72,7 +72,7 @@ @@ -72,7 +72,7 @@
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.Breakpoints}"
icon = "PadIcons.BreakPoints"
shortcut = "Control|Alt|P"
shortcut = "Ctrl+Alt+P"
class = "ICSharpCode.SharpDevelop.Gui.Pads.BreakPointsPad"
defaultPosition = "Bottom, Hidden" />
@ -80,7 +80,7 @@ @@ -80,7 +80,7 @@
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.CallStack}"
icon = "PadIcons.CallStack"
shortcut = "Control|Alt|C"
shortcut = "Ctrl+Alt+C"
class = "ICSharpCode.SharpDevelop.Gui.Pads.CallStackPad"
defaultPosition = "Bottom, Hidden" />
@ -88,7 +88,7 @@ @@ -88,7 +88,7 @@
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.Modules}"
icon = "PadIcons.LoadedModules"
shortcut = "Control|Alt|U"
shortcut = "Ctrl+Alt+U"
class = "ICSharpCode.SharpDevelop.Gui.Pads.LoadedModulesPad"
defaultPosition = "Bottom, Hidden" />
@ -96,7 +96,7 @@ @@ -96,7 +96,7 @@
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.Threads}"
icon = "PadIcons.Threads"
shortcut = "Control|Alt|H"
shortcut = "Ctrl+Alt+H"
class = "ICSharpCode.SharpDevelop.Gui.Pads.RunningThreadsPad"
defaultPosition = "Bottom, Hidden" />
@ -104,7 +104,7 @@ @@ -104,7 +104,7 @@
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.LocalVariables}"
icon = "PadIcons.LocalVariables"
shortcut = "Control|Alt|V"
shortcut = "Ctrl+Alt+V"
class = "ICSharpCode.SharpDevelop.Gui.Pads.LocalVarPad"
defaultPosition = "Bottom, Hidden" />
@ -112,7 +112,7 @@ @@ -112,7 +112,7 @@
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.Console}"
icon = "PadIcons.Output"
shortcut = "Control|Alt|N"
shortcut = "Ctrl+Alt+N"
class = "ICSharpCode.SharpDevelop.Gui.Pads.ConsolePad"
defaultPosition = "Bottom, Hidden" />
@ -120,7 +120,7 @@ @@ -120,7 +120,7 @@
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.Watch}"
icon = "PadIcons.LocalVariables"
shortcut = "Control|Alt|W"
shortcut = "Ctrl+Alt+W"
class = "ICSharpCode.SharpDevelop.Gui.Pads.WatchPad"
defaultPosition = "Bottom, Hidden" />
<!-- Hidden until DebuggerPad.IsVisible bug is fixed
@ -128,7 +128,7 @@ @@ -128,7 +128,7 @@
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.ObjectGraph}"
icon = "PadIcons.LocalVariables"
shortcut = "Control|Alt|O"
shortcut = "Ctrl+Alt+O"
class = "ICSharpCode.SharpDevelop.Gui.Pads.ObjectGraphPad"
defaultPosition = "Bottom, Hidden" />
-->

2
src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.addin

@ -76,7 +76,7 @@ @@ -76,7 +76,7 @@
<MenuItem id = "Separator5" type = "Separator" insertbefore = "Separator4" />
<MenuItem id = "SurroundWithSnippet"
insertbefore = "Separator4"
shortcut="Ctrl|J"
shortcut="Ctrl+J"
label = "Surround with"
class = "ICSharpCode.AvalonEdit.AddIn.Commands.SurroundWithCommand"/>
</Condition>

2
src/AddIns/DisplayBindings/Data/ICSharpCode.Data.Addin/ICSharpCode.Data.addin

@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
icon="Icons.16x16.SharpQuery.Refresh"
category="Tools"
title="DatabaseExplorer"
shortcut="Control|Alt|D"
shortcut="Ctrl+Alt+D"
defaultPosition = "Right, Hidden"
class="ICSharpCode.Data.Addin.Pad.DatabasesTreeViewPad" />
</Path>

2
src/AddIns/DisplayBindings/HexEditor/Project/HexEditor.addin

@ -43,7 +43,7 @@ @@ -43,7 +43,7 @@
<MenuItem id = "Save"
label = "${res:XML.MainMenu.FileMenu.Save}"
icon = "Icons.16x16.SaveIcon"
shortcut = "Control|S"
shortcut = "Ctrl+S"
class = "ICSharpCode.SharpDevelop.Commands.SaveFile"/>
<MenuItem id = "SaveAs"
label = "${res:XML.MainMenu.FileMenu.SaveAs}"

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/WpfDesign.addin

@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
category = "Tools"
title = "${res:ICSharpCode.SharpDevelop.Gui.OutlinePad}"
icon = "PadIcons.BreakPoints"
shortcut = "Control|Alt|I"
shortcut = "Ctrl+Alt+I"
class = "ICSharpCode.WpfDesign.AddIn.OutlineViewPad"/>
</Path>
-->

62
src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin

@ -83,7 +83,7 @@ @@ -83,7 +83,7 @@
<MenuItem id="ValidateXml"
label="${res:ICSharpCode.XmlEditor.ValidateXmlMenuLabel}"
class="ICSharpCode.XmlEditor.ValidateXmlCommand"
shortcut="Control|Shift|V"/>
shortcut="Ctrl+Shift+V"/>
<MenuItem id="Separator1" type="Separator"/>
<ComplexCondition action="Disable">
<Not>
@ -105,7 +105,7 @@ @@ -105,7 +105,7 @@
<MenuItem id="RunTransform"
label="${res:ICSharpCode.XmlEditor.RunXSLT}"
class="ICSharpCode.XmlEditor.RunXslTransformCommand"
shortcut="Control|Shift|T"/>
shortcut="Ctrl+Shift+T"/>
</ComplexCondition>
<MenuItem id="Separator2" type="Separator"/>
<MenuItem id="Format"
@ -115,60 +115,6 @@ @@ -115,60 +115,6 @@
</ComplexCondition>
</Path>
<!-- Right click menu -->
<Path name="/SharpDevelop/ViewContent/XmlEditor/ContextMenu">
<MenuItem id="Cut"
label="${res:XML.TextAreaContextMenu.Cut}"
icon="Icons.16x16.CutIcon"
shortcut="Control|X"
class="ICSharpCode.SharpDevelop.Commands.Cut"/>
<MenuItem id="Copy"
label="${res:XML.TextAreaContextMenu.Copy}"
icon="Icons.16x16.CopyIcon"
shortcut="Control|C"
class="ICSharpCode.SharpDevelop.Commands.Copy"/>
<MenuItem id="Paste"
label="${res:XML.TextAreaContextMenu.Paste}"
icon="Icons.16x16.PasteIcon"
shortcut="Control|V"
class="ICSharpCode.SharpDevelop.Commands.Paste"/>
<MenuItem id="Delete"
label="${res:XML.MainMenu.EditMenu.Delete}"
icon="Icons.16x16.DeleteIcon"
class="ICSharpCode.SharpDevelop.Commands.Delete"/>
<MenuItem id="Separator1" type="Separator"/>
<MenuItem id="Save"
label="${res:XML.MainMenu.FileMenu.Save}"
icon="Icons.16x16.SaveIcon"
shortcut="Control|S"
class="ICSharpCode.SharpDevelop.Commands.SaveFile"/>
<MenuItem id="SaveAs"
label="${res:XML.MainMenu.FileMenu.SaveAs}"
class="ICSharpCode.SharpDevelop.Commands.SaveFileAs"/>
<MenuItem id="File"
label="${res:XML.MainMenu.FileMenu.Close}"
class="ICSharpCode.SharpDevelop.Commands.CloseFile"/>
<MenuItem id="Separator2" type="Separator"/>
<MenuItem id="Indent"
label="${res:XML.TextAreaContextMenu.Indent}"
shortcut="Control|I"
class="ICSharpCode.SharpDevelop.DefaultEditor.Commands.IndentSelection"/>
<MenuItem id="HideXPathResults"
label="${res:ICSharpCode.XmlEditor.HideXPathResults}"
class="ICSharpCode.XmlEditor.RemoveXPathHighlightingCommand"/>
<MenuItem id="GoToDefinition"
label="${res:ICSharpCode.NAntAddIn.GotoDefinitionMenuLabel}"
class="ICSharpCode.XmlEditor.GoToSchemaDefinitionCommand"/>
<MenuItem id="FileMode" label="${res:XML.TextAreaContextMenu.FileMode}" type="Menu">
<MenuItem id="HighlightBuilder" type="Builder" class="ICSharpCode.SharpDevelop.DefaultEditor.Commands.HighlightingTypeBuilder"/>
</MenuItem>
<MenuItem id="Separator3" type="Separator"/>
<MenuItem id="Options"
label="${res:XML.TextAreaContextMenu.BufferOptions}"
icon="Icons.16x16.PropertiesIcon"
class="ICSharpCode.SharpDevelop.DefaultEditor.Commands.ShowBufferOptions"/>
</Path>
<!-- Options panel -->
<Path path="/SharpDevelop/Dialogs/OptionsDialog/TextEditorOptions">
<OptionPanel id="XmlSchemasPanel"
@ -182,10 +128,6 @@ @@ -182,10 +128,6 @@
class="ICSharpCode.XmlEditor.XmlEditorOptionsPanel"/>
</Path>
<Path path="/AddIns/XmlEditor/EditActions">
<EditAction id="XmlCompletionPopup" class="ICSharpCode.XmlEditor.CodeCompletionPopupCommand" keys="Control|Space"/>
<EditAction id="GoToDefinition" class="ICSharpCode.XmlEditor.GoToSchemaDefinitionEditAction" keys="Control|Enter"/>
</Path>
<!-- XPath Query pad -->
<Path name="/SharpDevelop/Workbench/Pads">

2
src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.addin

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
insertafter = "Bookmarks"
insertbefore = "DefinitionView"
icon = "CodeCoverage.Icons.16x16.Pad"
shortcut = "Control|Alt|G"
shortcut = "Ctrl+Alt+G"
class = "ICSharpCode.CodeCoverage.CodeCoveragePad"
defaultPosition = "Bottom, Hidden" />
</Path>

10
src/AddIns/Misc/HtmlHelp2/Project/HtmlHelp2.addin

@ -67,24 +67,24 @@ @@ -67,24 +67,24 @@
insertafter = "HtmlHelp2Separator2"
label = "${res:AddIns.HtmlHelp2.Contents}"
icon = "HtmlHelp2.16x16.Toc"
shortcut = "Control|Alt|F1"
shortcut = "Ctrl+Alt+F1"
class = "HtmlHelp2.ShowTocMenuCommand"/>
<MenuItem id = "IndexPadCommand"
label = "${res:AddIns.HtmlHelp2.Index}"
icon = "HtmlHelp2.16x16.Index"
shortcut = "Control|Alt|F2"
shortcut = "Ctrl+Alt+F2"
class = "HtmlHelp2.ShowIndexMenuCommand"
insertafter = "TocPadCommand"/>
<MenuItem id = "SearchPadCommand"
label = "${res:AddIns.HtmlHelp2.SearchCommand}"
icon = "HtmlHelp2.16x16.Search"
shortcut = "Control|Alt|F3"
shortcut = "Ctrl+Alt+F3"
class = "HtmlHelp2.ShowSearchMenuCommand"
insertafter = "IndexPadCommand"/>
<MenuItem id = "IndexResultsPadCommand"
label = "${res:AddIns.HtmlHelp2.IndexResults}"
icon = "HtmlHelp2.16x16.IndexResults"
shortcut = "Shift|Alt|F2"
shortcut = "Shift+Alt+F2"
class = "HtmlHelp2.ShowIndexResultsMenuCommand"
insertafter = "SearchPadCommand"
insertbefore = "Separator1"/>
@ -92,7 +92,7 @@ @@ -92,7 +92,7 @@
insertbefore = "TocPadCommand"
label = "${res:AddIns.HtmlHelp2.DynamicHelp}"
icon = "HtmlHelp2.16x16.DynamicHelp"
shortcut = "Control|F1"
shortcut = "Ctrl+F1"
class = "HtmlHelp2.ShowDynamicHelpMenuCommand"/>
</Path>

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

@ -8,8 +8,10 @@ @@ -8,8 +8,10 @@
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Input;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.Core.WinForms;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
@ -87,8 +89,12 @@ namespace SearchAndReplace @@ -87,8 +89,12 @@ namespace SearchAndReplace
SetSearchAndReplaceMode();
FormLocationHelper.Apply(this, "ICSharpCode.SharpDevelop.Gui.SearchAndReplaceDialog.Location", false);
searchKeyboardShortcut = GetKeyboardShortcut(SearchMenuAddInPath, "Find");
replaceKeyboardShortcut = GetKeyboardShortcut(SearchMenuAddInPath, "Replace");
// TODO: Check how this realy should work
var searchKeys = GetKeyBoardShortcut("SDSearchAndReplace.Find");
searchKeyboardShortcut = searchKeys.Length > 0 ? searchKeys[0] : Keys.None;
var replaceKeys = GetKeyBoardShortcut("SDSearchAndReplace.Replace");
replaceKeyboardShortcut = replaceKeys.Length > 0 ? replaceKeys[0] : Keys.None;
}
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
@ -97,7 +103,7 @@ namespace SearchAndReplace @@ -97,7 +103,7 @@ namespace SearchAndReplace
Instance = null;
}
protected override void OnKeyDown(KeyEventArgs e)
protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyData == Keys.Escape) {
Close();
@ -144,17 +150,73 @@ namespace SearchAndReplace @@ -144,17 +150,73 @@ namespace SearchAndReplace
/// Gets the keyboard shortcut for the menu item with the given addin tree
/// path and given codon id.
/// </summary>
Keys GetKeyboardShortcut(string path, string id)
Keys[] GetKeyboardShortcut(string path, string id)
{
AddInTreeNode node = AddInTree.GetTreeNode(path);
if (node != null) {
foreach (Codon codon in node.Codons) {
if (codon.Id == id) {
return MenuCommand.ParseShortcut(codon.Properties["shortcut"]);
return (Keys[])new KeysCollectionConverter().ConvertFromInvariantString(codon.Properties["shortcut"]);
}
}
}
return Keys.None;
return new Keys[] { Keys.None };
}
Keys[] GetKeyBoardShortcut(string routedCommandName)
{
var template = BindingInfoTemplate.Create(null, null, routedCommandName);
var gestureCollection = SDCommandManager.FindInputGestures(template, null);
var keyCollection = new Keys[gestureCollection.Count];
var i = 0;
foreach(InputGesture gesture in gestureCollection) {
var keyGesture = gesture as KeyGesture;
if(!(keyGesture is MultiKeyGesture)) { // I can't imagine presenting these in WinForms
keyCollection[i++] = ConvertInputGestureToKeys(keyGesture);
}
}
return keyCollection;
}
Keys ConvertInputGestureToKeys(KeyGesture gesture)
{
var formsKey = Keys.None;
var key = Key.None;
var modifiers = System.Windows.Input.ModifierKeys.None;
var partialGesture = gesture as PartialKeyGesture;
var multiKeyGesture = gesture as MultiKeyGesture;
if(partialGesture != null) {
key = partialGesture.Key;
modifiers = partialGesture.Modifiers;
} else if(!(gesture is MultiKeyGesture)) {
key = gesture.Key;
modifiers = gesture.Modifiers;
}
if(key != Key.None || modifiers != System.Windows.Input.ModifierKeys.None) {
formsKey |= (Keys)KeyInterop.VirtualKeyFromKey(key);
if((modifiers & System.Windows.Input.ModifierKeys.Alt) == System.Windows.Input.ModifierKeys.Alt) {
formsKey |= Keys.Alt;
}
if((modifiers & System.Windows.Input.ModifierKeys.Control) == System.Windows.Input.ModifierKeys.Control) {
formsKey |= Keys.Control;
}
if((modifiers & System.Windows.Input.ModifierKeys.Shift) == System.Windows.Input.ModifierKeys.Shift) {
formsKey |= Keys.Shift;
}
// What about "Windows" key?
}
return formsKey;
}
}
}

6
src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.addin

@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
<MenuItem id = "Find"
label = "${res:XML.MainMenu.SearchMenu.Find}"
icon = "Icons.16x16.FindIcon"
shortcut = "Control|F"
shortcut = "Ctrl+F"
class = "SearchAndReplace.Find"/>
<MenuItem id = "FindNext"
insertafter = "Find"
@ -26,14 +26,14 @@ @@ -26,14 +26,14 @@
<MenuItem id = "FindNextSelected"
insertafter = "FindNext"
label = "${res:XML.MainMenu.SearchMenu.FindNextSelected}"
shortcut = "Control|F3"
shortcut = "Ctrl+F3"
class = "SearchAndReplace.FindNextSelected"/>
<MenuItem id = "Replace"
insertbefore = "SearchIncremental"
insertafter = "FindNextSelected"
label = "${res:XML.MainMenu.SearchMenu.Replace}"
icon = "Icons.16x16.ReplaceIcon"
shortcut = "Control|R"
shortcut = "Ctrl+R"
class = "SearchAndReplace.Replace"/>
</Path>

4
src/AddIns/Misc/SearchAndReplace/Project/SearchAndReplace.csproj

@ -128,6 +128,10 @@ @@ -128,6 +128,10 @@
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj">
<Project>{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}</Project>
<Name>ICSharpCode.Core.Presentation</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj">
<Project>{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}</Project>
<Name>ICSharpCode.Core.WinForms</Name>

34
src/AddIns/Misc/ShortcutsManagement/Properties/AssemblyInfo.cs

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ShortcutsManagement")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//In order to begin building localizable applications, set
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
//inside a <PropertyGroup>. For example, if you are using US english
//in your source files, set the <UICulture> to en-US. Then uncomment
//the NeutralResourceLanguage attribute below. Update the "en-US" in
//the line below to match the UICulture setting in the project file.
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]

63
src/AddIns/Misc/ShortcutsManagement/Properties/Resources.Designer.cs generated

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.3082
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ICSharpCode.ShortcutsManagement.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ICSharpCode.ShortcutsManagement.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

117
src/AddIns/Misc/ShortcutsManagement/Properties/Resources.resx

@ -0,0 +1,117 @@ @@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

26
src/AddIns/Misc/ShortcutsManagement/Properties/Settings.Designer.cs generated

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.3082
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ICSharpCode.ShortcutsManagement.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

7
src/AddIns/Misc/ShortcutsManagement/Properties/Settings.settings

@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/16-square-red-remove.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

215
src/AddIns/Misc/ShortcutsManagement/Resources/StringResources.resx

@ -0,0 +1,215 @@ @@ -0,0 +1,215 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ShortcutsManagement.EnterGestureLabel" xml:space="preserve">
<value>Add gesture</value>
</data>
<data name="ShortcutsManagement.ShortcutGesturesLabel" xml:space="preserve">
<value>Shortcut gestures</value>
</data>
<data name="ShortcutsManagement.SimilarShortcutsLabel" xml:space="preserve">
<value>Shortcuts with same gestures</value>
</data>
<data name="Global.CancelButtonText" xml:space="preserve">
<value>_Cancel</value>
<comment>For testing outside SD</comment>
</data>
<data name="Global.OKButtonText" xml:space="preserve">
<value>_OK</value>
<comment>For testing outside SD</comment>
</data>
<data name="ShortcutsManagement.UnspecifiedAddInName" xml:space="preserve">
<value>Unspecified</value>
</data>
<data name="ShortcutsManagement.UnspecifiedCategoryName" xml:space="preserve">
<value>Uncategorized</value>
</data>
<data name="ShortcutsManagement.GestureTextBox.FirstChordIsIncomplete" xml:space="preserve">
<value>First chord must have a modifier</value>
</data>
<data name="ShortcutsManagement.GestureTextBox.GestureIsValid" xml:space="preserve">
<value>Valid gesture</value>
</data>
<data name="ShortcutsManagement.GestureTextBox.LastChordIsIncomplete" xml:space="preserve">
<value>Multi key gesture is not finished</value>
</data>
<data name="ShortcutsManagement.GestureTextBox.SequenceIsNotCoherent" xml:space="preserve">
<value>Invalid gesture. Sequence is not coherent.</value>
</data>
<data name="ShortcutsManagement.GestureTextBox.TimeExpired" xml:space="preserve">
<value>Time given for gesture entry expired</value>
</data>
<data name="ShortcutsManagement.ModificationWindow.AdditionFailedFirstChordIsIncomplete" xml:space="preserve">
<value>Failed to add a gesture. First chord should contain a modifier</value>
</data>
<data name="ShortcutsManagement.ModificationWindow.AdditionFailedLastChordIsIncompete" xml:space="preserve">
<value>Failed to add a gesture. Gesture is unfinished. Last chord should have a key</value>
</data>
<data name="ShortcutsManagement.ModificationWindow.AdditionFailedNoChords" xml:space="preserve">
<value>Failed to add a gesture. Gesture must have atleast one chord</value>
</data>
<data name="ShortcutsManagement.ModificationWindow.AdditionIsSuccessfull" xml:space="preserve">
<value>Gesture added</value>
</data>
<data name="ShortcutsManagement.ModificationWindow.AddingExistingGesture" xml:space="preserve">
<value>Failed to add a gesture. Such gesture already exists in shortcut gestures collections</value>
</data>
<data name="ShortcutsManagement.CreateNewProfilePrompt.BasedOnLabel" xml:space="preserve">
<value>Based on:</value>
</data>
<data name="ShortcutsManagement.CreateNewProfilePrompt.SpecifyProfileNameLabel" xml:space="preserve">
<value>Please specify profile name</value>
</data>
<data name="ShortcutsManagement.ReadOnly" xml:space="preserve">
<value>Read-Only</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.ConfirmDeleteProfileMessage" xml:space="preserve">
<value>Are you sure you want to reset modifications to current profile?</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.ConfirmDeleteProfileMessageWindowName" xml:space="preserve">
<value>Reset modifications to profile</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.NoProfileSelectedMessage" xml:space="preserve">
<value>Please select a profile which you wan't to modify.</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileCreateAction" xml:space="preserve">
<value>Create</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileDeleteAction" xml:space="preserve">
<value>Delete</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileLoadAction" xml:space="preserve">
<value>Load</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileRenameAction" xml:space="preserve">
<value>Rename</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfileResetAction" xml:space="preserve">
<value>Reset to defaults</value>
</data>
<data name="ShortcutsManagement.ShortcutManagementWindow.ResetToDefaults" xml:space="preserve">
<value>Reset</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfilesLabel" xml:space="preserve">
<value>Profiles:</value>
</data>
<data name="ShortcutsManagement.ShortcutsManagementOptionsPanel.SelectedProfileIsReadOnlyMessage" xml:space="preserve">
<value>Selected profile is read-only.</value>
</data>
</root>

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/Thumbs.db

Binary file not shown.

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/add_correction_16x16.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/block_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/delete_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/info_big.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/info_mid.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/info_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/key_enter.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/key_enter_pressed.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/plus_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/search_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/tick_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
src/AddIns/Misc/ShortcutsManagement/Resources/warning_small.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

19
src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement.addin

@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
<AddIn name = "ShortcutsManagement"
author = "Sergej Andrejev"
url = ""
description = "Addin allows managing application shortcuts">
<Manifest>
<Identity name="ICSharpCode.ShortcutsManagement" version = "@SharpDevelopCoreVersion"/>
</Manifest>
<Runtime>
<Import assembly = "ICSharpCode.ShortcutsManagement.dll"/>
</Runtime>
<Path name = "/SharpDevelop/Dialogs/OptionsDialog/TextEditorOptions">
<OptionPanel id = "ShortcutsManagement"
label = "Shortcuts management"
class = "ICSharpCode.ShortcutsManagement.Dialogs.ShortcutsManagementOptionsPanel" />
</Path>
</AddIn>

160
src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement.csproj

@ -0,0 +1,160 @@ @@ -0,0 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<PropertyGroup>
<ProjectGuid>{745869FF-80E9-4589-A366-E775D2103843}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.ShortcutsManagement</RootNamespace>
<AssemblyName>ICSharpCode.ShortcutsManagement</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<AppDesignerFolder>Properties</AppDesignerFolder>
<SignAssembly>True</SignAssembly>
<AssemblyOriginatorKeyFile>ShortcutsManagement.snk</AssemblyOriginatorKeyFile>
<DelaySign>False</DelaySign>
<AssemblyOriginatorKeyMode>File</AssemblyOriginatorKeyMode>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<OutputPath>..\..\..\..\AddIns\AddIns\Misc\ShortcutsManagement\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<Optimize>False</Optimize>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<StartAction>Program</StartAction>
<StartProgram>..\..\..\..\bin\SharpDevelop.exe</StartProgram>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugSymbols>False</DebugSymbols>
<DebugType>None</DebugType>
<Optimize>True</Optimize>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
<DefineConstants>TRACE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="PresentationFramework">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="WindowsBase">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Src\Converters\AdditionConverter.cs" />
<Compile Include="Src\Converters\BoolToVisibilityConverter.cs" />
<Compile Include="Src\Converters\GesturesCollectionConverter.cs" />
<Compile Include="Src\Converters\InputGestureConverter.cs" />
<Compile Include="Src\Converters\NotNullOrEmptyConverter.cs" />
<Compile Include="Src\Converters\ProfilesComboBoxItemStyleSelector.cs" />
<Compile Include="Src\Converters\ProfileToStringConverter.cs" />
<Compile Include="Src\Converters\ShortcutCategorySubElementsMergedConverter.cs" />
<Compile Include="Src\Converters\TypeNameConverter.cs" />
<Compile Include="Src\Data\AddIn.cs" />
<Compile Include="Src\Data\IShortcutTreeEntry.cs" />
<Compile Include="Src\Data\IShortcutTreeEntryCloner.cs" />
<Compile Include="Src\Data\MapTable.cs" />
<Compile Include="Src\Data\SeparatorData.cs" />
<Compile Include="Src\Data\Shortcut.cs" />
<Compile Include="Src\Data\ShortcutCategory.cs" />
<Compile Include="Src\Data\ShortcutsFinder.cs" />
<Compile Include="Src\Data\UserGestureProfileAction.cs" />
<Compile Include="Src\Dialogs\CreateNewProfilePrompt.xaml.cs">
<DependentUpon>CreateNewProfilePrompt.xaml</DependentUpon>
</Compile>
<Compile Include="Src\Dialogs\MultiKeyGestureTextBox.xaml.cs">
<DependentUpon>MultiKeyGestureTextBox.xaml</DependentUpon>
</Compile>
<Compile Include="Src\Dialogs\ShortcutManagementWindow.xaml.cs">
<DependentUpon>ShortcutManagementWindow.xaml</DependentUpon>
</Compile>
<Compile Include="Src\Dialogs\ShortcutsManagementOptionsPanel.xaml.cs">
<DependentUpon>ShortcutsManagementOptionsPanel.xaml</DependentUpon>
</Compile>
<Compile Include="Src\Dialogs\ShortcutsTreeView.xaml.cs">
<DependentUpon>ShortcutsTreeView.xaml</DependentUpon>
</Compile>
<Compile Include="Src\Extensions\TextBlockBehavior.cs" />
<Compile Include="Src\Extensions\TreeViewExtensions.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Resources" />
<Folder Include="Src" />
<Folder Include="Src\Converters" />
<Folder Include="Src\Data" />
<Folder Include="Src\Dialogs" />
<Folder Include="Src\Extensions" />
<Folder Include="Themes" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\16-square-red-remove.png" />
<Resource Include="Resources\add_correction_16x16.gif" />
<Resource Include="Resources\block_small.png" />
<Resource Include="Resources\delete_small.png" />
<Resource Include="Resources\info_big.png" />
<Resource Include="Resources\info_mid.png" />
<Resource Include="Resources\info_small.png" />
<Resource Include="Resources\key_enter.png" />
<Resource Include="Resources\key_enter_pressed.png" />
<Resource Include="Resources\plus_small.png" />
<Resource Include="Resources\search_small.png" />
<Resource Include="Resources\tick_small.png" />
<Resource Include="Resources\warning_small.png" />
<None Include="ShortcutsManagement.addin">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources\StringResources.resx" />
</ItemGroup>
<ItemGroup>
<Page Include="Src\Dialogs\CreateNewProfilePrompt.xaml" />
<Page Include="Src\Dialogs\MultiKeyGestureTextBox.xaml" />
<Page Include="Src\Dialogs\Resources.xaml" />
<Page Include="Src\Dialogs\ShortcutManagementWindow.xaml" />
<Page Include="Src\Dialogs\ShortcutsManagementOptionsPanel.xaml" />
<Page Include="Src\Dialogs\ShortcutsTreeView.xaml" />
<Page Include="Themes\Generic.xaml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Main\Core\Project\ICSharpCode.Core.csproj">
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project>
<Name>ICSharpCode.Core</Name>
</ProjectReference>
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj">
<Project>{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}</Project>
<Name>ICSharpCode.Core.Presentation</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />
</Project>

BIN
src/AddIns/Misc/ShortcutsManagement/ShortcutsManagement.snk

Binary file not shown.

41
src/AddIns/Misc/ShortcutsManagement/Src/Converters/AdditionConverter.cs

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Converts double value to another double value by adding another value provided in converter parameter
/// </summary>
class AddidionConverter : IValueConverter
{
/// <summary>
/// Convert double value to another double value by adding another value provided in converter parameter
/// </summary>
/// <param name="value">Original double value</param>
/// <param name="targetType">Convertion target type</param>
/// <param name="parameter">Another double value to be added to original value</param>
/// <param name="culture">Not used</param>
/// <returns>New double value</returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double additionParameter = 0;
var additionParameterString = parameter as string;
if (additionParameterString != null) {
Double.TryParse(additionParameterString, out additionParameter);
}
if(value is double) {
var doubleValue = (double)value;
return doubleValue + additionParameter;
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

36
src/AddIns/Misc/ShortcutsManagement/Src/Converters/BoolToVisibilityConverter.cs

@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Converts boolean value to <see cref="Visibility" /> enum
/// </summary>
public class BoolToVisibilityConverter : IValueConverter
{
/// <summary>
/// Convert forward
/// </summary>
/// <param name="value">Boolean value</param>
/// <param name="targetType">Target type (Only string is supported)</param>
/// <param name="parameter">Hide type (Hidden - reserve space but don't show, Collapse - do not reserve space)</param>
/// <param name="culture">Culture info (Invariant culture is used always)</param>
/// <returns>Visibility value</returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is bool) {
var hidden = parameter ?? "Hidden";
return (bool)value ? "Visible" : hidden;
}
throw new NotSupportedException();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

46
src/AddIns/Misc/ShortcutsManagement/Src/Converters/GesturesCollectionConverter.cs

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
using System;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Input;
using ICSharpCode.Core.Presentation;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Converts input gestures collection into string
/// </summary>
public class GesturesListConverter : IValueConverter
{
/// <summary>
/// Convert collection of gestures to a string
/// </summary>
/// <param name="value">Collection of gestures</param>
/// <param name="targetType">Convertion target type (only string is supported)</param>
/// <param name="parameter">Not used</param>
/// <param name="culture">Not used</param>
/// <returns>String representing collection of gestures</returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string converterValue = "";
if (value is InputGestureCollection && (targetType == typeof(string) || targetType.IsSubclassOf(typeof(string)))) {
converterValue = new InputGestureCollectionConverter().ConvertToInvariantString(value);
}
if (value is ObservableCollection<InputGesture> && (targetType == typeof(string) || targetType.IsSubclassOf(typeof(string)))) {
var inputGestureCollection = new InputGestureCollection();
foreach (var gesture in (ObservableCollection<InputGesture>)value) {
inputGestureCollection.Add(gesture);
}
converterValue = new InputGestureCollectionConverter().ConvertToInvariantString(inputGestureCollection);
}
return converterValue.Replace("+", " + ").Replace(",", ", ").Replace(";", "; ");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

41
src/AddIns/Misc/ShortcutsManagement/Src/Converters/InputGestureConverter.cs

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Input;
using ICSharpCode.Core.Presentation;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Converts input gesture to string representation
/// </summary>
public class InputGestureConverter : IValueConverter
{
/// <summary>
/// Convert input gesture to string
/// </summary>
/// <param name="value">Input gesture</param>
/// <param name="targetType">Convertion target type (Only string is supported)</param>
/// <param name="parameter">Not used</param>
/// <param name="culture">Not used</param>
/// <returns>String representing <see cref="InputGesture" /></returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is KeyGesture && targetType == typeof(string)) {
var gestures = new InputGestureCollection(new[] {value});
return new InputGestureCollectionConverter().ConvertToInvariantString(gestures).Replace("+", " + ").Replace(",", ", ");
}
if(value is MouseGesture && targetType == typeof(string)) {
return new MouseGestureConverter().ConvertToInvariantString(value);
}
return "";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

34
src/AddIns/Misc/ShortcutsManagement/Src/Converters/NotNullOrEmptyConverter.cs

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Converts null and empty string to true and all other values to false
/// </summary>
class NotNullOrEmptyConverter : IValueConverter
{
/// <summary>
/// Converts null and empty string to true and all other values to false
/// </summary>
/// <param name="value">String or any other object</param>
/// <param name="targetType">Convertion target type</param>
/// <param name="parameter">Not used</param>
/// <param name="culture">Not used</param>
/// <returns>Bool value</returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((value is string && !string.IsNullOrEmpty((string)value)) || (!(value is string) && value != null)) {
return true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

42
src/AddIns/Misc/ShortcutsManagement/Src/Converters/ProfileToStringConverter.cs

@ -0,0 +1,42 @@ @@ -0,0 +1,42 @@
using System;
using System.Globalization;
using System.Windows.Data;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Converts profile to representing string
/// </summary>
public class ProfileToStringConverter : IValueConverter
{
/// <summary>
/// Converts profile to representing string
/// </summary>
/// <param name="value">UserGestureProfile instance</param>
/// <param name="targetType">Convertion target type (only string is supported)</param>
/// <param name="parameter">Not supported</param>
/// <param name="culture">Not supported</param>
/// <returns>String representing instance of UserGestureProfile</returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var profile = value as UserGestureProfile;
if(profile != null) {
var readOnlyString = "";
if(profile.ReadOnly) {
readOnlyString = string.Format(" ({0})", StringParser.Parse("${res:ShortcutsManagement.ReadOnly}"));
}
return profile.Text + readOnlyString;
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

31
src/AddIns/Misc/ShortcutsManagement/Src/Converters/ProfilesComboBoxItemStyleSelector.cs

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
using System.Windows;
using System.Windows.Controls;
using ICSharpCode.ShortcutsManagement.Data;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Selects profilesComboBox item style
/// </summary>
public class ProfilesComboBoxItemStyleSelector : StyleSelector
{
/// <summary>
/// Selects profilesComboBox item style
/// </summary>
/// <param name="item">Item contained in ComboBoxItem</param>
/// <param name="container">ComboBoxItem container</param>
/// <returns>ComboBoxItem style</returns>
public override Style SelectStyle(object item, DependencyObject container)
{
if(item is SeparatorData) {
return (Style)((FrameworkElement)container).FindResource("SeparatorStyle");
}
if(item is UserGestureProfileAction) {
return (Style)((FrameworkElement)container).FindResource("ProfileActionStyle");
}
return null;
}
}
}

37
src/AddIns/Misc/ShortcutsManagement/Src/Converters/ShortcutCategorySubElementsMergedConverter.cs

@ -0,0 +1,37 @@ @@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
using ICSharpCode.ShortcutsManagement.Data;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Merges category's sub-categories and shortcuts into one list
/// </summary>
public class ShortcutCategorySubElementsMergedConverter : IMultiValueConverter
{
/// <summary>
/// Merge category's sub-categories and shortcuts into one list
/// </summary>
/// <param name="values">List of sub-categories and list of shortcuts</param>
/// <param name="targetType">Not used</param>
/// <param name="parameter">Not used</param>
/// <param name="culture">Not used</param>
/// <returns>List of objects where objects are either a shortcut category or a shortcut</returns>
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var items = new List<object>();
items.AddRange(((IEnumerable<ShortcutCategory>)values[0]).Cast<object>());
items.AddRange(((IEnumerable<Shortcut>)values[1]).Cast<object>());
return items;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

30
src/AddIns/Misc/ShortcutsManagement/Src/Converters/TypeNameConverter.cs

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace ICSharpCode.ShortcutsManagement.Converters
{
/// <summary>
/// Convert object to its type name
/// </summary>
class TypeNameConverter : IValueConverter
{
/// <summary>
/// Convert object to type name
/// </summary>
/// <param name="value">Any object</param>
/// <param name="targetType">Convertion target type (Only string is supported)</param>
/// <param name="parameter">Not used</param>
/// <param name="culture">Not used</param>
/// <returns>Passed object type name</returns>
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value.GetType().Name;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

125
src/AddIns/Misc/ShortcutsManagement/Src/Data/AddIn.cs

@ -0,0 +1,125 @@ @@ -0,0 +1,125 @@
using System.Collections.Generic;
using System.ComponentModel;
namespace ICSharpCode.ShortcutsManagement.Data
{
/// <summary>
/// Add-in where shortcuts were registered
/// </summary>
public class AddIn : INotifyPropertyChanged, IShortcutTreeEntry
{
private string name;
/// <summary>
/// Gets or sets add-in name
/// </summary>
public string Name
{
get {
return name;
}
set {
if (name != value) {
name = value;
InvokePropertyChanged("Name");
}
}
}
private bool isVisible;
/// <summary>
/// Gets or sets value specifying whether category is visible in shortcuts tree or not
/// </summary>
public bool IsVisible
{
get {
return isVisible;
}
set {
if (isVisible != value) {
isVisible = value;
InvokePropertyChanged("IsVisible");
}
}
}
/// <summary>
/// Gets list of add-in categories
/// </summary>
public List<ShortcutCategory> Categories
{
get;
private set;
}
/// <summary>
/// Creates new instance of <see cref="AddIn" />
/// </summary>
/// <param name="addInName">Add-in name</param>
public AddIn(string addInName)
{
IsVisible = true;
Name = addInName;
Categories = new List<ShortcutCategory>();
}
/// <summary>
/// Finds shortcut by shortcut Id in add-in categories
/// </summary>
/// <param name="shortcutId">Shortcut Id</param>
/// <returns>Shortcut with matching Id value</returns>
public Shortcut FindShortcut(string shortcutId)
{
foreach (var c in Categories) {
Shortcut foundShortcut;
if ((foundShortcut = c.FindShortcut(shortcutId)) != null) {
return foundShortcut;
}
}
return null;
}
/// <summary>
/// Sorts add-in sub-categories
/// </summary>
public void SortSubEntries()
{
Categories.Sort((a, b) => a.Name.CompareTo(b.Name));
foreach (var category in Categories) {
category.SortSubEntries();
}
}
/// <summary>
/// Occurs when <see cref="Name" /> or or <see cref="IsVisible" /> property value changes
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Compares add-in to other instances of type <see cref="IShortcutTreeEntry"/>
/// </summary>
/// <param name="obj">Compared object</param>
/// <returns>Comparison result</returns>
public int CompareTo(object obj)
{
if (obj is ShortcutCategory) return -1;
if (obj is Shortcut) return -1;
var addInObj = (AddIn)obj;
return Name.CompareTo(addInObj.Name);
}
/// <summary>
/// Invoke dependency property changed event
/// </summary>
/// <param name="propertyName">Name of dependency property from this classs</param>
private void InvokePropertyChanged(string propertyName)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}

35
src/AddIns/Misc/ShortcutsManagement/Src/Data/IShortcutTreeEntry.cs

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
using System;
namespace ICSharpCode.ShortcutsManagement.Data
{
public interface IShortcutTreeEntry : IComparable
{
/// <summary>
/// Gets or sets shortcut entry name displayed in shortcuts tree
/// </summary>
string Name
{
get; set;
}
/// <summary>
/// Specifies whether shortcut tree entry is visible
/// </summary>
bool IsVisible
{
get; set;
}
/// <summary>
/// Sort shortcut entry sub elements
/// </summary>
void SortSubEntries();
/// <summary>
/// Search for shortcut in this shortcut entry and sub-elements
/// </summary>
/// <param name="shortcutId"></param>
/// <returns></returns>
Shortcut FindShortcut(string shortcutId);
}
}

119
src/AddIns/Misc/ShortcutsManagement/Src/Data/IShortcutTreeEntryCloner.cs

@ -0,0 +1,119 @@ @@ -0,0 +1,119 @@
using System;
using System.Collections.Generic;
using System.Windows.Input;
namespace ICSharpCode.ShortcutsManagement.Data
{
/// <summary>
/// Creates deep copy of <see cref="Shortcut" />, <see cref="ShortcutTree" /> or <see cref="AddIn" />
/// </summary>
public class IShortcutTreeEntryCloner
{
/// <summary>
/// Creates new instance of <see cref="IShortcutTreeEntryCloner" />
/// </summary>
public IShortcutTreeEntryCloner()
{
}
/// <summary>
/// Deep clone collection of <see cref="IShortcutTreeEntry" />
///
/// Re-uses <see cref="Shortcut" /> instances for similar shortcuts in different categories
/// </summary>
/// <param name="entries">Collection of <see cref="IShortcutTreeEntry" /></param>
/// <returns>Cloned entries</returns>
public ICollection<IShortcutTreeEntry> CloneShortcutTree(ICollection<IShortcutTreeEntry> entries)
{
var clonedShortcuts = new Dictionary<string, Shortcut>();
var clonedEntries = new List<IShortcutTreeEntry>();
// Make a deep copy of all add-ins, categories and shortcuts
foreach (var entry in entries) {
var shortcut = entry as Shortcut;
var category = entry as ShortcutCategory;
var addin = entry as AddIn;
IShortcutTreeEntry clonedEntry = null;
if(shortcut != null) {
clonedEntry = CloneShortcut(shortcut, clonedShortcuts);
} else if(category != null) {
clonedEntry = CloneShortutCategory(category, clonedShortcuts);
} else if(addin != null) {
clonedEntry = CloneAddin(addin, clonedShortcuts);
}
clonedEntries.Add(clonedEntry);
}
return clonedEntries;
}
/// <summary>
/// Creates a deep copy of <see cref="ShortcutCategory" /> instance
///
/// Re-uses <see cref="Shortcut" /> instances for similar shortcuts in different categories
/// </summary>
/// <param name="category">Cloned shortcut category</param>
/// <param name="clonedShortcuts">Dictionary of shortcuts which should be re-used. If cloned shortcut <see cref="Shortcut.Id" /> property value is already preset in this dictionary instance from dictionary is used instead</param>
/// <returns>Deep copy of <see cref="ShortcutCategory" /></returns>
public ShortcutCategory CloneShortutCategory(ShortcutCategory category, Dictionary<string, Shortcut> clonedShortcuts)
{
var clonedCategory = new ShortcutCategory(category.Name);
foreach (var subCategory in category.SubCategories) {
clonedCategory.SubCategories.Add(CloneShortutCategory(subCategory, clonedShortcuts));
}
foreach (var shortcut in category.Shortcuts) {
clonedCategory.Shortcuts.Add(CloneShortcut(shortcut, clonedShortcuts));
}
return clonedCategory;
}
/// <summary>
/// Create a deep copy of <see cref="AddIn" /> instance
///
/// Re-uses <see cref="Shortcut" /> instances for similar shortcuts in different categories
/// </summary>
/// <param name="shortcut">Cloned shortcut</param>
/// <param name="clonedShortcuts">Dictionary of shortcuts which should be re-used. If cloned shortcut <see cref="Shortcut.Id" /> property value is already preset in this dictionary instance from dictionary is used instead</param>
/// <returns>Deep copy of <see cref="Shortcut" /></returns>
public Shortcut CloneShortcut(Shortcut shortcut, Dictionary<string, Shortcut> clonedShortcuts)
{
if(clonedShortcuts.ContainsKey(shortcut.Id)) {
return clonedShortcuts[shortcut.Id];
} else {
var clonedShortcut = new Shortcut(
shortcut.Id,
shortcut.Name,
new InputGestureCollection(shortcut.Gestures),
new InputGestureCollection(shortcut.DefaultGestures));
clonedShortcuts.Add(clonedShortcut.Id, clonedShortcut);
return clonedShortcut;
}
}
/// <summary>
/// Creates a deep copy of <see cref="AddIn" /> instance
///
/// Re-uses <see cref="Shortcut" /> instances for similar shortcuts in different categories
/// </summary>
/// <param name="category">Cloned add-in</param>
/// <param name="clonedShortcuts">Dictionary of shortcuts which should be re-used. If cloned shortcut <see cref="Shortcut.Id" /> property value is already preset in this dictionary instance from dictionary is used instead</param>
/// <returns>Deep copy of <see cref="AddIn" /> instance</returns>
public AddIn CloneAddin(AddIn addin, Dictionary<string, Shortcut> clonedShortcuts)
{
var clonedAddIn = new AddIn(addin.Name);
foreach (var category in addin.Categories) {
clonedAddIn.Categories.Add(CloneShortutCategory(category, clonedShortcuts));
}
return clonedAddIn;
}
}
}

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

@ -0,0 +1,87 @@ @@ -0,0 +1,87 @@
using System.Collections;
using System.Collections.Generic;
namespace ICSharpCode.ShortcutsManagement.Data
{
/// <summary>
/// Stores one-to-one relationships beween two objects of type T1 and T2
/// </summary>
public class MapTable<T1, T2> : IEnumerable<KeyValuePair<T1, T2>>
{
private readonly Dictionary<T1, T2> forwardMaping = new Dictionary<T1, T2>();
private readonly Dictionary<T2, T1> backwardMaping = new Dictionary<T2, T1>();
/// <summary>
/// Add new relationship between mapped and mapping object
/// </summary>
/// <param name="mappingObject">Mapping object</param>
/// <param name="mappedObject">Mapping object</param>
public void Add(T1 mappingObject, T2 mappedObject)
{
forwardMaping.Add(mappingObject, mappedObject);
backwardMaping.Add(mappedObject, mappingObject);
}
/// <summary>
/// Tries to find object related to mapping object
/// </summary>
/// <param name="mappingObject">Mapping object</param>
/// <param name="mappedObject">Mapped object</param>
public void TryMapForward(T1 mappingObject, out T2 mappedObject)
{
forwardMaping.TryGetValue(mappingObject, out mappedObject);
}
/// <summary>
/// Tries to find object related to mapped object
/// </summary>
/// <param name="mappingObject">Mapped object</param>
/// <param name="mappedObject">Mapping object</param>
public void TryMapBackward(T2 mappedObject, out T1 mappingObject)
{
backwardMaping.TryGetValue(mappedObject, out mappingObject);
}
/// <summary>
/// Finds object related to mapping object
/// </summary>
/// <param name="mappingObject">Mapping object</param>
/// <returns>Mapped object</returns>
public T2 MapForward(T1 mappingObject)
{
return forwardMaping[mappingObject];
}
/// <summary>
/// Finds object related to mapped object
/// </summary>
/// <param name="mappingObject">Mapped object</param>
/// <returns>Mapping object</returns>
public T1 MapBackward(T2 mappingObject)
{
return backwardMaping[mappingObject];
}
/// <summary>
/// Removes all relationships from map
/// </summary>
public void Clear()
{
forwardMaping.Clear();
backwardMaping.Clear();
}
/// <inheritdoc />
public IEnumerator<KeyValuePair<T1, T2>> GetEnumerator()
{
return forwardMaping.GetEnumerator();
}
/// <inheritdoc />
IEnumerator IEnumerable.GetEnumerator()
{
return forwardMaping.GetEnumerator();
}
}
}

9
src/AddIns/Misc/ShortcutsManagement/Src/Data/SeparatorData.cs

@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
namespace ICSharpCode.ShortcutsManagement.Data
{
/// <summary>
/// Represents a seporator in data binded control
/// </summary>
class SeparatorData
{
}
}

235
src/AddIns/Misc/ShortcutsManagement/Src/Data/Shortcut.cs

@ -0,0 +1,235 @@ @@ -0,0 +1,235 @@
using System;
using System.Collections.ObjectModel;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Input;
using ICSharpCode.Core.Presentation;
using System.Linq;
using System.Collections.Specialized;
namespace ICSharpCode.ShortcutsManagement.Data
{
/// <summary>
/// Shortcut
/// </summary>
public class Shortcut : INotifyPropertyChanged, IShortcutTreeEntry
{
/// <summary>
/// Gets collection of input gestures assigned to this <see cref="Shortcut" /> instance
/// </summary>
public ObservableCollection<InputGesture> Gestures
{
get;
private set;
}
/// <summary>
/// Gets collection of default input suggested assigned by developer
/// </summary>
public ReadOnlyCollection<InputGesture> DefaultGestures
{
get;
private set;
}
private bool _doesUseDefault;
/// <summary>
/// Gets or sets value which specifies whether default gestures should be used or those assigned by user
/// </summary>
public bool DoesUseDefault
{
get {
return _doesUseDefault;
}
}
private string _name;
/// <summary>
/// Gets or sets shortcut name (displayed to user)
/// </summary>
public string Name
{
get {
return _name;
}
set {
if(_name != value) {
_name = value;
InvokePropertyChanged("Name");
}
}
}
/// <summary>
/// Sorts shortcut sub-elements
/// </summary>
public void SortSubEntries()
{
}
/// <summary>
/// Gets or sets shortcut id.
///
/// This value is used to identify shortcut clones
/// </summary>
public string Id
{
get; set;
}
private bool isVisible;
/// <summary>
/// Gets or sets whether category is visible in shortcuts tree
///
/// Dependency property
/// </summary>
public bool IsVisible
{
get {
return isVisible;
}
set {
if(isVisible != value) {
isVisible = value;
InvokePropertyChanged("IsVisible");
}
}
}
/// <summary>
/// Notify observers about property changes
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Create new instance of <see cref="Shortcut" />
/// </summary>
/// <param name="id">Shortcut id. Used to identify shortcut clones</param>
/// <param name="gestures">Active gestures</param>
/// <param name="defaultGestures">Default gestures suggest by developer</param>
public Shortcut(string shortcutText, InputGestureCollection gestures, InputGestureCollection defaultGestures)
: this(Guid.NewGuid().ToString(), shortcutText, gestures, defaultGestures)
{
}
/// <summary>
/// Create new instance of <see cref="Shortcut" />
/// </summary>
/// <param name="id">Shortcut id. Used to identify shortcut clones</param>
/// <param name="shortcutText">Shortcut action name (displayed to user)</param>
/// <param name="gestures">Active gestures</param>
/// <param name="defaultGestures">Default gestures suggest by developer</param>
public Shortcut(string id, string shortcutText, InputGestureCollection gestures, InputGestureCollection defaultGestures)
{
IsVisible = true;
Id = id;
Name = shortcutText;
if(defaultGestures != null) {
var defaultGesturesArray = new InputGesture[defaultGestures.Count];
defaultGestures.CopyTo(defaultGesturesArray, 0);
DefaultGestures = new ReadOnlyCollection<InputGesture>(defaultGesturesArray);
} else {
DefaultGestures = new ReadOnlyCollection<InputGesture>(new List<InputGesture>());
}
Gestures = new ObservableCollection<InputGesture>();
if(gestures != null) {
foreach (InputGesture gesture in gestures) {
Gestures.Add(gesture);
}
}
_doesUseDefault = new InputGestureCollection(Gestures).ContainsTemplateForAny(new InputGestureCollection(DefaultGestures), GestureCompareMode.ExactlyMatches);
Gestures.CollectionChanged += Gestures_CollectionChanged;
}
void Gestures_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
var newDoesUseDefaultValue = new InputGestureCollection(Gestures).ContainsTemplateForAny(new InputGestureCollection(DefaultGestures), GestureCompareMode.ExactlyMatches);
if(_doesUseDefault != newDoesUseDefaultValue) {
_doesUseDefault = newDoesUseDefaultValue;
InvokePropertyChanged("DoesUseDefault");
}
InvokePropertyChanged("Gestures");
}
/// <summary>
/// Determines whether provided gesture is already assigned to this action
/// </summary>
/// <param name="gesture">Input gesture</param>
/// <returns>True if provided gesture is assigned to this action. Otherwise false</returns>
public bool ContainsGesture(InputGesture gesture)
{
foreach (var existingGesture in Gestures) {
if(existingGesture == gesture) {
return true;
}
if(existingGesture is KeyGesture && gesture is KeyGesture) {
var existingKeyGesture = (KeyGesture) existingGesture;
var keyGesture = (KeyGesture) gesture;
if(existingKeyGesture.Key == keyGesture.Key && existingKeyGesture.Modifiers == keyGesture.Modifiers) {
return true;
}
}
}
return false;
}
/// <summary>
/// Compare shortcut to other instances of <see cref="IShortcutTreeEntry"/>
/// </summary>
/// <param name="obj">Compared object</param>
/// <returns>Comparison result</returns>
public int CompareTo(object obj)
{
if (obj is AddIn) return 1;
if (obj is ShortcutCategory) return 1;
var shortcutObj = (Shortcut)obj;
return Name.CompareTo(shortcutObj.Name);
}
/// <summary>
/// Returns this <see cref="Shortcut"/> instance if searched id matches
/// </summary>
/// <param name="shortcutId">Searched shortcut id</param>
/// <returns>Found shortcut instance or null</returns>
public Shortcut FindShortcut(string shortcutId) {
return Id == shortcutId ? this : null;
}
/// <summary>
/// Invoke dependency property changed event
/// </summary>
/// <param name="propertyName">Name of dependency property from this classs</param>
private void InvokePropertyChanged(string propertyName)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
/// <summary>
/// Resets active gestures assigned to this shortcut to default <see cref="InputGestureCollection" /> suggested by developer
/// </summary>
public void ResetToDefaults()
{
_doesUseDefault = true;
Gestures.Clear();
foreach(var gesture in DefaultGestures) {
Gestures.Add(gesture);
}
}
}
}

145
src/AddIns/Misc/ShortcutsManagement/Src/Data/ShortcutCategory.cs

@ -0,0 +1,145 @@ @@ -0,0 +1,145 @@
using System.Collections.Generic;
using System.ComponentModel;
namespace ICSharpCode.ShortcutsManagement.Data
{
/// <summary>
/// Stores shortcut category data
/// </summary>
public class ShortcutCategory : INotifyPropertyChanged, IShortcutTreeEntry
{
private string name;
/// <summary>
/// Gets or sets category name
/// </summary>
public string Name
{
get {
return name;
}
set {
if (name != value) {
name = value;
InvokePropertyChanged("Name");
}
}
}
private bool isVisible;
/// <summary>
/// Gets or sets whether category is visible in shortcuts tree
/// </summary>
public bool IsVisible
{
get {
return isVisible;
}
set {
if (isVisible != value) {
isVisible = value;
InvokePropertyChanged("IsVisible");
}
}
}
/// <summary>
/// Gets list of sub-cateories
/// </summary>
public List<ShortcutCategory> SubCategories
{
get;
private set;
}
/// <summary>
/// Gets shortcuts assigned to this category
/// </summary>
public List<Shortcut> Shortcuts
{
get;
private set;
}
/// <summary>
/// Occurs when <see cref="Name" /> or <see cref="IsVisible" /> property changes
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Creates new instance of <see cref="ShortcutCategory" />
/// </summary>
/// <param name="categoryName">Category name</param>
public ShortcutCategory(string categoryName)
{
IsVisible = true;
Shortcuts = new List<Shortcut>();
SubCategories = new List<ShortcutCategory>();
Name = categoryName;
}
/// <summary>
/// Sorts category shortcuts
/// </summary>
public void SortSubEntries()
{
SubCategories.Sort((a, b) => a.Name.CompareTo(b.Name));
Shortcuts.Sort((a, b) => a.Name.CompareTo(b.Name));
foreach (var category in SubCategories) {
category.SortSubEntries();
}
}
/// <summary>
/// In this category and sub-categories finds shortcut by shortcut ID
/// </summary>
/// <param name="shortcutId">Shortcut ID</param>
/// <returns>Shortcut with ID equal to provided</returns>
public Shortcut FindShortcut(string shortcutId)
{
// Search for shortcut in shortcuts assigned to this category
foreach (var s in Shortcuts) {
if(s.Id == shortcutId) {
return s;
}
}
// Search for shortcut in sub categories
foreach (var category in SubCategories) {
Shortcut foundShortcut;
if ((foundShortcut = category.FindShortcut(shortcutId)) != null) {
return foundShortcut;
}
}
return null;
}
/// <summary>
/// Compares <see cref="ShortcutCategory" /> instance to another instance of <see cref="IShortcutTreeEntry"/> type
/// </summary>
/// <param name="obj">Compared object</param>
/// <returns>Comparison result</returns>
public int CompareTo(object obj)
{
if (obj is AddIn) return 1;
if (obj is Shortcut) return -1;
var categoryObj = (ShortcutCategory)obj;
return Name.CompareTo(categoryObj.Name);
}
/// <summary>
/// Invoke dependency property changed event
/// </summary>
/// <param name="propertyName">Name of dependency property from this classs</param>
private void InvokePropertyChanged(string propertyName)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}

264
src/AddIns/Misc/ShortcutsManagement/Src/Data/ShortcutsFinder.cs

@ -0,0 +1,264 @@ @@ -0,0 +1,264 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Windows.Input;
using ICSharpCode.Core.Presentation;
using ICSharpCode.ShortcutsManagement.Extensions;
namespace ICSharpCode.ShortcutsManagement.Data
{
/// <summary>
/// Filters and hides shortcuts from add-in collection
/// </summary>
public class ShortcutsFinder
{
/// <summary>
/// Gets and sets collection of add-ins, shortcut categories and shortcuts from shortcuts tree root level
/// </summary>
public ICollection<IShortcutTreeEntry> RootEntries
{
get; set;
}
/// <summary>
/// Create new instance of <see cref="ShortcutsFinder"/>
/// </summary>
/// <param name="rootEntries"></param>
public ShortcutsFinder(ICollection<IShortcutTreeEntry> rootEntries)
{
RootEntries = rootEntries;
}
/// <summary>
/// Hides shortcut by setting <see cref="Shortcut.IsVisible"/> to false
///
/// This also function hides parent categories and Add-in if it has no sub-elements
/// left
/// </summary>
/// <param name="shortcut">Shortcut to be hidden</param>
public void HideShortcut(Shortcut shortcut)
{
foreach (var entry in RootEntries) {
var subCategoryIsVisible = false;
var rootAddIn = entry as AddIn;
if (rootAddIn != null) {
foreach (var category in rootAddIn.Categories) {
if (HideShortcut(category, shortcut)) {
subCategoryIsVisible = true;
}
}
// Hide add-in if it doesn't have any visible sub-elements
rootAddIn.IsVisible = subCategoryIsVisible;
}
var rootCategory = entry as ShortcutCategory;
if(rootCategory != null) {
HideShortcut(rootCategory, shortcut);
}
var rootShortcut = entry as Shortcut;
if (rootShortcut != null) {
shortcut.IsVisible = false;
}
}
}
private static bool HideShortcut(ShortcutCategory category, Shortcut filteredShortcut)
{
// Check if this shortcut is in subcategories
var isSubElementVisible = false;
foreach (var subCategory in category.SubCategories) {
if (HideShortcut(subCategory, filteredShortcut)) {
isSubElementVisible = true;
}
}
// Determine whether provided shortcut is in provided category and
// hide it if so
foreach (var shortcut in category.Shortcuts) {
if (shortcut.Id == filteredShortcut.Id) {
shortcut.IsVisible = false;
}
if(shortcut.IsVisible) {
isSubElementVisible = true;
}
}
// Hide category if it doesn't have any visible sub-elements
category.IsVisible = isSubElementVisible;
return category.IsVisible;
}
/// <summary>
/// Filters gestures matching provided key gesture template
///
/// Hides add-ins and sub-categories if there are no sub-elements left
/// </summary>
/// <param name="inputGestureTemplate">Gesture template which should match shortcut gesture partly to make it visible</param>
/// <param name="mode">Filtering mode</param>
public void FilterGesture(InputGesture inputGestureTemplate, GestureCompareMode mode)
{
FilterGesture(new InputGestureCollection(new[] { inputGestureTemplate }), mode);
}
/// <summary>
/// Filter gestures matching one of provided gesture templates
///
/// Hides add-ins and sub-categories if there are no sub-elements left
/// </summary>
/// <param name="inputGestureTemplateCollection">Collection of gesture templates which (atleast one) should match shortcut gesture partly to make it visible</param>
/// <param name="mode">Filtering mode</param>
public void FilterGesture(InputGestureCollection inputGestureTemplateCollection, GestureCompareMode mode)
{
foreach (var entry in RootEntries) {
var subCategoryIsVisible = false;
// Filter root addin and sub-elements
var rootAddIn = entry as AddIn;
if (rootAddIn != null) {
foreach (var category in rootAddIn.Categories) {
if (FilterGesture(category, inputGestureTemplateCollection, mode)) {
subCategoryIsVisible = true;
}
}
// Hide add-in if it doesn't have any visible sub-elements
rootAddIn.IsVisible = subCategoryIsVisible;
}
// Filter root category and sub-elements
var rootCategory = entry as ShortcutCategory;
if (rootCategory != null) {
FilterGesture(rootCategory, inputGestureTemplateCollection, mode);
}
// Filter root shortcut
var rootShortcut = entry as Shortcut;
if (rootShortcut != null) {
rootShortcut.IsVisible = false;
foreach (InputGesture template in inputGestureTemplateCollection) {
if (template.IsTemplateForAny(new InputGestureCollection(rootShortcut.Gestures), mode)) {
rootShortcut.IsVisible = true;
break;
}
}
}
}
}
/// <summary>
/// Filter gestures matching one of provided gesture templates from templates collection
/// </summary>
/// <param name="category">Category to filter</param>
/// <param name="inputGestureTemplateCollection">Collection of gesture templates which (atleast one) should match shortcut gesture partly to make it visible</param>
/// <param name="mode">Filtering mode</param>
/// <returns><code>true</code> if found any gestur matching provided template; otherwise <code>false</code></returns>
private static bool FilterGesture(ShortcutCategory category, InputGestureCollection inputGestureTemplateCollection, GestureCompareMode mode)
{
// Apply filter to sub-categories
var isSubElementVisible = false;
foreach (var subCategory in category.SubCategories) {
if (FilterGesture(subCategory, inputGestureTemplateCollection, mode)) {
isSubElementVisible = true;
}
}
// Apply filter to shortcuts
foreach (var shortcut in category.Shortcuts) {
var gestureMatched = inputGestureTemplateCollection.ContainsTemplateForAny(new InputGestureCollection(shortcut.Gestures), mode);
if (gestureMatched) {
shortcut.IsVisible = true;
isSubElementVisible = true;
} else {
shortcut.IsVisible = false;
}
}
// Hide category if it doesn't have any visible sub-elements
category.IsVisible = isSubElementVisible;
return category.IsVisible;
}
/// <summary>
/// Filter addins, child categories and shortcuts where item name
/// contains filter string
///
/// Hides add-ins and sub-categories if there are no sub-elements left
/// </summary>
/// <param name="filterString">Filter string</param>
public void Filter(string filterString)
{
foreach (var entry in RootEntries) {
var rootAddIn = entry as AddIn;
if (rootAddIn != null) {
// If add-in name matches filter string show all sub-elements
var addInNameContainsFilterString = !string.IsNullOrEmpty(filterString) && rootAddIn.Name.IndexOf(filterString, StringComparison.InvariantCultureIgnoreCase) >= 0;
// Apply filter to categories
var subCategoryIsVisible = false;
foreach (var category in rootAddIn.Categories) {
if (Filter(category, filterString, addInNameContainsFilterString ? (bool?) true : null)) {
subCategoryIsVisible = true;
}
}
// If last category in add-in was hidden and addin name does not contain
// part of the filter then hide add-in
rootAddIn.IsVisible = addInNameContainsFilterString || subCategoryIsVisible;
}
var rootCategory = entry as ShortcutCategory;
if (rootCategory != null) {
Filter(rootCategory, filterString, null);
}
var rootShortcut = entry as Shortcut;
if (rootShortcut != null) {
rootShortcut.IsVisible = filterString == null || rootShortcut.Name.IndexOf(filterString, StringComparison.InvariantCultureIgnoreCase) >= 0;
}
}
}
/// <summary>
/// Filter categorys and child elements where item name contains filter string
/// </summary>
/// <param name="category">Category to filter</param>
/// <param name="filterString">Filter string</param>
/// <param name="forseMatch">If set to true all sub-elements are visible</param>
/// <returns></returns>
private static bool Filter(ShortcutCategory category, string filterString, bool? forseMatch)
{
// If category name matches filter show all sub-categories and shortcuts
if (!string.IsNullOrEmpty(filterString) && category.Name.IndexOf(filterString, StringComparison.InvariantCultureIgnoreCase) >= 0) {
forseMatch = true;
}
// Apply filter to sub-categories
var isSubElementVisible = false;
foreach (var subCategory in category.SubCategories) {
if(Filter(subCategory, filterString, forseMatch)) {
isSubElementVisible = true;
}
}
// Filter shortcuts which text match the filter
foreach (var shortcut in category.Shortcuts) {
if ((forseMatch.HasValue && forseMatch.Value) || filterString == null || shortcut.Name.IndexOf(filterString, StringComparison.InvariantCultureIgnoreCase) >= 0) {
shortcut.IsVisible = true;
isSubElementVisible = true;
} else {
shortcut.IsVisible = false;
}
}
// Show category if has sub elements, forced or matches search filter
return category.IsVisible = (forseMatch.HasValue && forseMatch.Value && (category.SubCategories.Count > 0 || category.Shortcuts.Count > 0)) || isSubElementVisible;
}
}
}

26
src/AddIns/Misc/ShortcutsManagement/Src/Data/UserGestureProfileAction.cs

@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
namespace ICSharpCode.ShortcutsManagement.Data
{
/// <summary>
/// Represents action <see cref="UserGestureProfile" /> action
/// </summary>
class UserGestureProfileAction
{
/// <summary>
/// Gets or sets action name
/// </summary>
public string Name
{
get;
set;
}
/// <summary>
/// Gets or sets action text
/// </summary>
public object Text
{
get;
set;
}
}
}

57
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/CreateNewProfilePrompt.xaml

@ -0,0 +1,57 @@ @@ -0,0 +1,57 @@
<Window x:Class="ICSharpCode.ShortcutsManagement.Dialogs.CreateNewProfilePrompt"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:Presentation="clr-namespace:ICSharpCode.Core.Presentation;assembly=ICSharpCode.Core.Presentation"
Title="InputMessageBox"
ResizeMode="NoResize"
x:Name="_this"
SizeToContent="WidthAndHeight" >
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml" />
<ResourceDictionary>
<DataTemplate DataType="{x:Type Presentation:UserGestureProfile}">
<TextBlock Text="{Binding Path=Text}" />
</DataTemplate>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition MinHeight="42" Height="42" />
<RowDefinition Height="30" />
<RowDefinition Height="Auto" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="52" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Grid.Row="0" Source="../../Resources/info_mid.png" Height="32" Margin="5" />
<Label Grid.Column="1" Grid.Row="0" VerticalAlignment="Center" Padding="5">
<TextBlock Text="{core:Localize ShortcutsManagement.CreateNewProfilePrompt.SpecifyProfileNameLabel}" />
</Label>
<TextBox Grid.Column="1" Grid.Row="1" x:Name="profileNameTextBox" Text="{Binding Path=Text, ElementName=_this}" HorizontalAlignment="Stretch" Padding="3" Margin="5,5,20,5" />
<Grid Grid.Column="1" Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="200" />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="3" Visibility="{Binding Path=BaseProfilesVisibility, ElementName=_this}" >
<TextBlock Text="{core:Localize ShortcutsManagement.CreateNewProfilePrompt.BasedOnLabel}" />
</Label>
<ComboBox Grid.Column="1" Margin="5,5,20,5" ItemsSource="{Binding Path=AvailableBaseProfiles, ElementName=_this}" SelectedItem="{Binding Path=BaseProfile, ElementName=_this}" Visibility="{Binding Path=BaseProfilesVisibility, ElementName=_this}" />
</Grid>
<WrapPanel Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="3" HorizontalAlignment="Center" Margin="5">
<Button Content="{core:Localize Global.OKButtonText}" Width="70" Padding="15,0" Margin="5,0" Click="OkButton_Click" IsEnabled="{Binding Text, ElementName=profileNameTextBox, Converter={StaticResource NotNullOrEmptyConverter}}" />
<Button Content="{core:Localize Global.CancelButtonText}" Padding="15,0" Margin="5,0" Click="CancelButton_Click" />
</WrapPanel>
</Grid>
</Window>

131
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/CreateNewProfilePrompt.xaml.cs

@ -0,0 +1,131 @@ @@ -0,0 +1,131 @@
using System.Collections.Generic;
using System.Windows;
using ICSharpCode.Core.Presentation;
namespace ICSharpCode.ShortcutsManagement.Dialogs
{
/// <summary>
/// Window prompting user to enter new or existing profile name
/// and base profile
/// </summary>
public partial class CreateNewProfilePrompt : Window
{
/// <summary>
/// Identifies <see cref="BaseProfile"/> dependency property
/// </summary>
public static readonly DependencyProperty BaseProfileProperty = DependencyProperty.Register(
"BaseProfile",
typeof(UserGestureProfile),
typeof(CreateNewProfilePrompt),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Gets or sets profile which new profile will be based on
/// </summary>
public UserGestureProfile BaseProfile
{
get {
return (UserGestureProfile)GetValue(BaseProfileProperty);
}
set {
SetValue(BaseProfileProperty, value);
}
}
/// <summary>
/// Identifies <see cref="BaseProfilesVisibility"/> dependency property
/// </summary>
public static readonly DependencyProperty BaseProfilesVisibilityProperty = DependencyProperty.Register(
"BaseProfilesVisibility",
typeof(Visibility),
typeof(CreateNewProfilePrompt),
new FrameworkPropertyMetadata(Visibility.Visible, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Gets or sets base profiles combo box visibility
/// </summary>
public Visibility BaseProfilesVisibility
{
get {
return (Visibility)GetValue(BaseProfilesVisibilityProperty);
}
set {
SetValue(BaseProfilesVisibilityProperty, value);
}
}
/// <summary>
/// Identifies <see cref="AvailableBaseProfiles"/> dependency property
/// </summary>
public static readonly DependencyProperty AvailableBaseProfilesProperty = DependencyProperty.Register(
"AvailableBaseProfiles",
typeof(ICollection<UserGestureProfile>),
typeof(CreateNewProfilePrompt),
new FrameworkPropertyMetadata(new List<UserGestureProfile>(), FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Profiles user can choose from when selecting base profile
/// </summary>
public ICollection<UserGestureProfile> AvailableBaseProfiles
{
get {
return (ICollection<UserGestureProfile>)GetValue(AvailableBaseProfilesProperty);
}
set {
SetValue(AvailableBaseProfilesProperty, value);
}
}
/// <summary>
/// Identifies <see cref="Text"/> dependency property
/// </summary>
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
"Text",
typeof(string),
typeof(CreateNewProfilePrompt),
new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Gets or sets text entered in window text box
/// </summary>
public string Text
{
get {
return (string)GetValue(TextProperty);
}
set {
SetValue(TextProperty, value);
}
}
/// <summary>
/// Creates new instance of <see cref="CreateNewProfilePrompt"/>
/// </summary>
public CreateNewProfilePrompt()
{
InitializeComponent();
}
/// <summary>
/// Executed when user clicks on OK button
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event argument</param>
private void OkButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
/// <summary>
/// Executed when user clicks on Cancel buttons
/// </summary>
/// <param name="sender">Sender obect</param>
/// <param name="e">Event argument</param>
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
Close();
}
}
}

92
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/MultiKeyGestureTextBox.xaml

@ -0,0 +1,92 @@ @@ -0,0 +1,92 @@
<UserControl x:Class="ICSharpCode.ShortcutsManagement.Dialogs.MultiKeyGestureTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Dialogs="clr-namespace:ICSharpCode.ShortcutsManagement.Dialogs"
x:Name="_this" >
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderThickness="{Binding ElementName=_this, Path=TextBoxBorderThickness}" SnapsToDevicePixels="True" BorderBrush="{x:Static SystemColors.ControlDarkBrush}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" x:Name="shortcutTextBox" PreviewKeyDown="TextBox_PreviewKeyDown" TextChanged="shortcutTextBox_TextChanged" AcceptsTab="True" AcceptsReturn="True" VerticalAlignment="Top" Padding="5" BorderThickness="0" />
<Button Grid.Column="1" x:Name="clearTextBox" VerticalAlignment="Center" Margin="5,0" Click="clearTextBox_Click">
<Button.Template>
<ControlTemplate>
<Image Source="../../Resources/delete_small.png" Width="16" />
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
</Border>
<!-- Notification panel under the textbox -->
<StackPanel Grid.Row="1" Orientation="Horizontal" Visibility="{Binding ElementName=_this, Path=NotificationVisibility}" Height="16" Margin="0">
<Image Height="16" Margin="5,0,10,0">
<Image.Style>
<Style>
<Style.Triggers>
<DataTrigger Value="{x:Static Dialogs:NotificationType.Valid}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="Image.Source" Value="../../Resources/tick_small.png" />
</DataTrigger>
<DataTrigger Value="{x:Static Dialogs:NotificationType.Invalid}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="Image.Source" Value="../../Resources/warning_small.png" />
</DataTrigger>
<DataTrigger Value="{x:Static Dialogs:NotificationType.Added}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="Image.Source" Value="../../Resources/plus_small.png" />
</DataTrigger>
<DataTrigger Value="{x:Static Dialogs:NotificationType.Failed}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="Image.Source" Value="../../Resources/block_small.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<TextBlock Text="{Binding ElementName=_this, Path=NotificationText}" VerticalAlignment="Center">
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Value="{x:Static Dialogs:NotificationType.Valid}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="TextBlock.Foreground" Value="Green"/>
</DataTrigger>
<DataTrigger Value="{x:Static Dialogs:NotificationType.Invalid}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="TextBlock.Foreground" Value="Red"/>
</DataTrigger>
<DataTrigger Value="{x:Static Dialogs:NotificationType.Added}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="TextBlock.Foreground" Value="Green"/>
</DataTrigger>
<DataTrigger Value="{x:Static Dialogs:NotificationType.Failed}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="TextBlock.Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<StackPanel.Style>
<Style>
<Style.Triggers>
<DataTrigger Value="{x:Static Dialogs:NotificationType.None}" Binding="{Binding ElementName=_this, Path=NotificationType}">
<Setter Property="TextBlock.Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
</StackPanel>
</Grid>
</UserControl>

294
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/MultiKeyGestureTextBox.xaml.cs

@ -0,0 +1,294 @@ @@ -0,0 +1,294 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
namespace ICSharpCode.ShortcutsManagement.Dialogs
{
/// <summary>
/// Notification type enumeration
/// </summary>
public enum NotificationType
{
/// <summary>
/// A valid gesture is entered so far
/// </summary>
Valid,
/// <summary>
/// Gesture is being entered, but is not valid yet
/// </summary>
Invalid,
/// <summary>
/// Gesture was successfully added to gestures collection
/// </summary>
Added,
/// <summary>
/// Failed to add gesture to gestures collection
/// </summary>
Failed,
/// <summary>
/// Notification message is not displayed
/// </summary>
None
}
/// <summary>
/// Represents a textbox suited for entering key gestures
/// </summary>
public partial class MultiKeyGestureTextBox : UserControl
{
/// <summary>
/// Identifies <see cref="TextBoxBorderThickness"/> dependency property
/// </summary>
public static readonly DependencyProperty TextBoxBorderThicknessProperty = DependencyProperty.Register(
"TextBoxBorderThickness",
typeof(int),
typeof(MultiKeyGestureTextBox),
new FrameworkPropertyMetadata(1, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Gets or sets text box border thickness
/// </summary>
public int TextBoxBorderThickness
{
get {
return (int)GetValue(TextBoxBorderThicknessProperty);
}
set {
SetValue(TextBoxBorderThicknessProperty, value);
}
}
/// <summary>
/// Gets <see cref="KeyGesture" /> entered in text box
/// </summary>
public KeyGesture Gesture
{
get {
if (enteredKeyGestureSequence == null || enteredKeyGestureSequence.Count == 0) {
return null;
}
if (enteredKeyGestureSequence.Count == 1) {
return new PartialKeyGesture(enteredKeyGestureSequence.First());
}
return new MultiKeyGesture(enteredKeyGestureSequence);
}
}
/// <summary>
/// Occurs when gesture entered in text box changes
/// </summary>
public event EventHandler GestureChanged;
/// <summary>
/// Identifies <see cref="NotificationVisibility"/> dependency property
/// </summary>
public static readonly DependencyProperty NotificationVisibilityProperty = DependencyProperty.Register(
"NotificationVisibility",
typeof(Visibility),
typeof(MultiKeyGestureTextBox),
new FrameworkPropertyMetadata(Visibility.Visible, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Gets or sets value which specifies whether notifications are displayed under textbox control
/// </summary>
public Visibility NotificationVisibility
{
get {
return (Visibility)GetValue(NotificationVisibilityProperty);
}
set {
SetValue(NotificationVisibilityProperty, value);
}
}
/// <summary>
/// Identifies <see cref="NotificationType"/> dependency property
/// </summary>
public static readonly DependencyProperty NotificationTypeProperty = DependencyProperty.Register(
"NotificationType",
typeof(NotificationType),
typeof(MultiKeyGestureTextBox),
new FrameworkPropertyMetadata(NotificationType.None, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Gets or sets notification type
/// </summary>
public NotificationType NotificationType
{
get {
return (NotificationType)GetValue(NotificationTypeProperty);
}
set {
SetValue(NotificationTypeProperty, value);
}
}
/// <summary>
/// Identifies <see cref="NotificationText"/> dependency property
/// </summary>
public static readonly DependencyProperty NotificationTextProperty = DependencyProperty.Register(
"NotificationText",
typeof(string),
typeof(MultiKeyGestureTextBox),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Gets or sets displayed notification text
/// </summary>
public string NotificationText
{
get {
return (string)GetValue(NotificationTextProperty);
}
set {
SetValue(NotificationTextProperty, value);
}
}
/// <summary>
/// Last entered chords
/// </summary>
private List<PartialKeyGesture> enteredKeyGestureSequence = new List<PartialKeyGesture>();
/// <summary>
/// Time when last successfull chord was entered
/// </summary>
private DateTime lastEnterTime = DateTime.Now;
/// <summary>
/// Creates instance of <see cref="MultiKeyGestureTextBox"/>
/// </summary>
public MultiKeyGestureTextBox()
{
InitializeComponent();
}
/// <summary>
/// Displays notifications under gesture text box
/// </summary>
/// <param name="notificationText">Notification text</param>
/// <param name="type">Notification type</param>
public void DisplayNotification(string notificationText, NotificationType type)
{
NotificationText = notificationText;
NotificationType = type;
}
/// <summary>
/// Clears all text area, chords and hides notification
/// </summary>
public void Clear()
{
enteredKeyGestureSequence = new List<PartialKeyGesture>();
shortcutTextBox.Text = "";
DisplayNotification("", NotificationType.None);
}
/// <summary>
/// Executed when clicked on "Clear" button to the right from gesture text box
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e"><see cref="RoutedEvent" /> supporting data</param>
private void clearTextBox_Click(object sender, RoutedEventArgs e)
{
Clear();
}
/// <summary>
/// Executed when text inside textbox changes
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event arguments</param>
void shortcutTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (GestureChanged != null) {
GestureChanged.Invoke(sender, new EventArgs());
}
}
/// <summary>
/// Raised before user presses any key inside text box
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event argument</param>
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
// If a key is holded for a longer time key event is raised repeatedly.
// We don't want to handle this kind of events
if (e.IsRepeat) {
return;
}
// If delete or backspace button is pressed
if (e.Key == Key.Back || e.Key == Key.Delete) {
Clear();
return;
}
// Check whether time given for chord entry haven't expired yet
if (DateTime.Now - lastEnterTime > MultiKeyGesture.DelayBetweenChords) {
if (enteredKeyGestureSequence.Count > 0) {
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.GestureTextBox.TimeExpired}"), NotificationType.Invalid);
}
Clear();
lastEnterTime = DateTime.Now;
}
var partialKeyGesture = new PartialKeyGesture(e);
var lastGesture = enteredKeyGestureSequence.Count > 0 ? enteredKeyGestureSequence.LastOrDefault() : null;
var isLastGestureSpecialKey = lastGesture != null && (lastGesture.Key >= Key.F1) && (lastGesture.Key <= Key.F24);
var isLastGestureComplete = lastGesture != null && (lastGesture.Key != Key.None || isLastGestureSpecialKey);
var isContinuedGesture = lastGesture != null && partialKeyGesture.Modifiers - (partialKeyGesture.Modifiers ^ lastGesture.Modifiers) >= 0;
// If continuing previous chord
if (!isLastGestureComplete && isContinuedGesture) {
enteredKeyGestureSequence.RemoveAt(enteredKeyGestureSequence.Count - 1);
} else if (!isLastGestureComplete) {
// If previous chord is unfinished and second chord is already entered
// start from scratch.
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.GestureTextBox.SequenceIsNotCoherent}"), NotificationType.Invalid);
Clear();
}
// If successfully finished another chord give more time
if (partialKeyGesture.Key != Key.None) {
lastEnterTime = DateTime.Now;
}
enteredKeyGestureSequence.Add(partialKeyGesture);
// Create a multi key gesture if entered more than one chord
if (enteredKeyGestureSequence.Count > 0) {
var multiKeyGesture = new MultiKeyGesture(enteredKeyGestureSequence);
var multiKeyGestureString = new MultiKeyGestureConverter().ConvertToInvariantString(multiKeyGesture);
shortcutTextBox.Text = multiKeyGestureString;
} else {
Clear();
}
if (!enteredKeyGestureSequence[0].IsFull) {
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.GestureTextBox.FirstChordIsIncomplete}"), NotificationType.Invalid);
} else if (partialKeyGesture.Key == Key.None) {
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.GestureTextBox.LastChordIsIncomplete}"), NotificationType.Invalid);
} else {
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.GestureTextBox.GestureIsValid}"), NotificationType.Valid);
}
}
}
}

181
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/Resources.xaml

@ -0,0 +1,181 @@ @@ -0,0 +1,181 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Converters="clr-namespace:ICSharpCode.ShortcutsManagement.Converters">
<Converters:GesturesListConverter x:Key="GesturesListConverter" />
<Converters:ShortcutCategorySubElementsMergedConverter x:Key="ShortcutsTreeConverter" />
<Converters:TypeNameConverter x:Key="TypeNameConverter" />
<Converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
<Converters:NotNullOrEmptyConverter x:Key="NotNullOrEmptyConverter" />
<Converters:ProfileToStringConverter x:Key="ProfileToStringConverter" />
<Converters:InputGestureConverter x:Key="InputGestureConverter" />
<Converters:AddidionConverter x:Key="AddidionConverter" />
<LinearGradientBrush x:Key="SelectedItemBackground" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#3194FF" Offset="0" />
<GradientStop Color="#3984F7" Offset="1" />
</LinearGradientBrush>
<SolidColorBrush x:Key="SelectedItemForeground" Color="#FFF" />
<Style x:Key="RemoveButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Image Source="..\..\Resources\16-square-red-remove.png" Width="16" SnapsToDevicePixels="True" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="AddButton" TargetType="Button">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Image Source="..\..\Resources\add_correction_16x16.gif" Width="16" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="GesturesListBox" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<StackPanel>
<Border x:Name="ListBoxItemBorder" CornerRadius="6" Padding="10, 5" Background="{TemplateBinding Background}">
<ContentPresenter />
</Border>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="ListBoxItemBorder" Property="Panel.Background" Value="{StaticResource SelectedItemBackground}" />
<Setter TargetName="ListBoxItemBorder" Property="TextElement.Foreground" Value="{StaticResource SelectedItemForeground}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="KeyToggleButton" TargetType="ToggleButton">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Image x:Name="searchTypeImage" Source="..\..\Resources\key_enter.png" />
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Source" TargetName="searchTypeImage" Value="..\..\Resources\key_enter_pressed.png"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid Width="15" Height="13" Background="Transparent">
<Path x:Name="expandPath" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="1" Fill="#444" Data="M 4 0 L 8 4 L 4 8 Z"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Data" TargetName="expandPath" Value="M 0 4 L 8 4 L 4 8 Z"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ShortcutsTreeItem" TargetType="{x:Type TreeViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<Border Name="OuterBorder" BorderThickness="2" CornerRadius="8">
<StackPanel>
<Border Name="InnerBorder" Background="White" BorderThickness="0.6" CornerRadius="8" Padding="0,6,6,6" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="19" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ToggleButton Grid.Column="0" x:Name="treeViewItemToggleButton" Style="{StaticResource ExpandCollapseToggleStyle}" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press" />
<ContentPresenter Name="PART_Header" ContentSource="Header" VerticalAlignment="Center" Grid.Column="1" />
</Grid>
</Border>
<Border Name="ItemsBorder" Margin="20,0,0,0" >
<ItemsPresenter x:Name="ItemsHost" />
</Border>
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="false">
<Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/>
</Trigger>
<Trigger Property="HasItems" Value="false">
<Setter TargetName="treeViewItemToggleButton" Property="Visibility" Value="Hidden"/>
</Trigger>
<DataTrigger Binding="{Binding Converter={StaticResource TypeNameConverter}}" Value="ShortcutCategory">
<Setter TargetName="InnerBorder" Property="Panel.Background" Value="#DEDE00" />
<Setter TargetName="InnerBorder" Property="TextElement.Foreground" Value="#FFFFFF" />
</DataTrigger>
<DataTrigger Binding="{Binding Converter={StaticResource TypeNameConverter}}" Value="AddIn">
<Setter TargetName="InnerBorder" Property="Panel.Background" Value="#AEFFA8" />
<Setter TargetName="InnerBorder" Property="TextElement.Foreground" Value="#000000" />
<Setter TargetName="OuterBorder" Property="Margin" Value="0" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsVisible}" Value="false">
<Setter Property="Visibility" Value="Collapsed" />
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="InnerBorder" Property="Panel.Background" Value="{StaticResource SelectedItemBackground}" />
<Setter TargetName="InnerBorder" Property="TextElement.Foreground" Value="{StaticResource SelectedItemForeground}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type ListBoxItem}" x:Key="SeparatorStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Separator HorizontalAlignment="Stretch" IsEnabled="false" Margin="5"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type ListBoxItem}" x:Key="ProfileActionStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<TextBlock x:Name="textBlock" TextDecorations="Underline" Foreground="Blue" Margin="5" HorizontalAlignment="Left" TextAlignment="Left" >
<TextBlock.Style>
<Style>
<Style.Triggers>
<Trigger Property="TextBlock.IsMouseOver" Value="True">
<Setter Property="TextBlock.Background" Value="{StaticResource SelectedItemBackground}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
<ContentPresenter />
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>

104
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutManagementWindow.xaml

@ -0,0 +1,104 @@ @@ -0,0 +1,104 @@
<Window x:Class="ICSharpCode.ShortcutsManagement.Dialogs.ShortcutManagementWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:Dialogs="clr-namespace:ICSharpCode.ShortcutsManagement.Dialogs"
Title="{Binding Text}"
MinHeight="400"
MinWidth="400"
x:Name="_this">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml" />
<ResourceDictionary>
<Style x:Key="ValidationTextBox" TargetType="TextBlock"></Style>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid Margin="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition />
<RowDefinition Height="2" />
<RowDefinition />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<!-- Field for entering a gesture -->
<Label x:Name="shortcutLabel" Grid.Column="0" Grid.Row="0" Target="{Binding ElementName=gestureTextBox}" HorizontalAlignment="Right" VerticalAlignment="Top">
<TextBlock TextWrapping="Wrap" Text="{core:Localize ShortcutsManagement.EnterGestureLabel}" />
</Label>
<Grid Grid.Column="2" Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="40" />
</Grid.ColumnDefinitions>
<Dialogs:MultiKeyGestureTextBox x:Name="gestureTextBox" Grid.Column="0" Margin="3" TextBoxBorderThickness="1" />
<Button x:Name="addGestureButton" Grid.Column="1" Style="{StaticResource AddButton}" Height="25" VerticalAlignment="Top" Margin="3" Click="addGestureButton_Click" />
</Grid>
<!-- List of gestures assigned to modified shortcut -->
<Label x:Name="otherShortcutsLabel" Grid.Column="0" Grid.Row="1" Target="{Binding ElementName=otherShortcutsListBox}" HorizontalAlignment="Right" VerticalAlignment="Top">
<TextBlock TextWrapping="Wrap" Text="{core:Localize ShortcutsManagement.ShortcutGesturesLabel}" />
</Label>
<ListBox x:Name="otherShortcutsListBox" Grid.Column="1" Grid.Row="1" ItemContainerStyle="{StaticResource GesturesListBox}" ItemsSource="{Binding Path=Gestures}" Margin="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type InputGesture}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Converter={StaticResource InputGestureConverter}}" Grid.Column="0" />
<Button x:Name="removeGestureButton" Style="{StaticResource RemoveButton}" Grid.Column="1" Visibility="Hidden" Click="removeGestureButton_Click" Tag="{Binding}" />
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource TemplatedParent}}" Value="True">
<Setter Property="Visibility" TargetName="removeGestureButton" Value="Visible" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<GridSplitter Grid.Row="2" Grid.Column="2" ResizeDirection="Rows"
Width="Auto"
Height="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="White"
Margin="0"/>
<!-- List of shortcuts which have same gestures assigned to them -->
<Label x:Name="otherCommandsLabel" Grid.Row="3" Grid.Column="0" Target="{Binding ElementName=shortcutsManagementOptionsPanel}" HorizontalAlignment="Right" VerticalAlignment="Top">
<TextBlock TextWrapping="Wrap" Text="{core:Localize ShortcutsManagement.SimilarShortcutsLabel}" />
</Label>
<Dialogs:ShortcutsTreeView Grid.Row="3" Grid.Column="1" x:Name="shortcutsManagementOptionsPanel" IsSearchable="False" Padding="3" RemoveShortcutClick="shortcutsManagementOptionsPanel_RemoveShortcutClick" IsRemovableShortcutsEnabled="True" />
<!-- Defaults/Ok/Cancel buttons -->
<!-- Reset/Ok/Cancel buttons -->
<Grid Grid.Column="2" Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Click="DefaultButton_Click" x:Name="defaultButton" Margin="3" Width="80" Content="{core:Localize ShortcutsManagement.ShortcutManagementWindow.ResetToDefaults}" />
<Button Grid.Column="2" Click="saveButton_Click" x:Name="saveButton" Margin="3" Width="80" Content="{core:Localize Global.OKButtonText}" />
<Button Grid.Column="3" Click="resetButton_Click" x:Name="resetButton" Margin="3" Width="80" Content="{core:Localize Global.CancelButtonText}" />
</Grid>
</Grid>
</Window>

225
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutManagementWindow.xaml.cs

@ -0,0 +1,225 @@ @@ -0,0 +1,225 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.ShortcutsManagement.Data;
namespace ICSharpCode.ShortcutsManagement.Dialogs
{
/// <summary>
/// This window allows user to modify shortcuts registered in application
/// </summary>
public partial class ShortcutManagementWindow : Window
{
private HashSet<Shortcut> modifiedShortcuts = new HashSet<Shortcut>();
/// <summary>
/// Gets modified shortcut copy
/// </summary>
public Shortcut Shortcut
{
get; private set;
}
/// <summary>
/// Gets deep copy of addins list (including copies of categories and shortcuts)
/// </summary>
public ICollection<IShortcutTreeEntry> RootEntries
{
get; private set;
}
/// <summary>
/// Gets list of modified shortcuts.
///
/// This list is used to optimize performance. Shortcuts not in this list are not saved.
/// Allways add modified shortcut to this list.
/// </summary>
public ICollection<Shortcut> ModifiedShortcuts
{
get {
return modifiedShortcuts;
}
}
/// <summary>
/// Initializes new <see cref="ShortcutManagementWindow" /> class
/// </summary>
/// <param name="shortcut">Shortcut</param>
/// <param name="rootEntries">List of all other add-ins containing shortcuts and categories. This list is used to find dupliate shortcuts</param>
public ShortcutManagementWindow(Shortcut shortcut, ICollection<IShortcutTreeEntry> rootEntries)
{
Shortcut = shortcut;
RootEntries = rootEntries;
shortcut.Gestures.CollectionChanged += Gestures_CollectionChanged;
ModifiedShortcuts.Add(shortcut);
DataContext = shortcut;
InitializeComponent();
// Display similar shortcuts (Shortcuts with the same input gestures assigned to them)
shortcutsManagementOptionsPanel.DataContext = rootEntries;
shortcutsManagementOptionsPanel.Loaded += delegate { FilterSimilarShortcuts(); };
}
/// <summary>
/// Filter shortcuts using same gestures as modified shortcut
/// </summary>
private void FilterSimilarShortcuts()
{
var templates = new InputGestureCollection(Shortcut.Gestures);
// Find shortcuts with same gesture and hide them.
// Also hide modified shortcut from this list
var finder = new ShortcutsFinder(RootEntries);
finder.FilterGesture(templates, GestureCompareMode.Conflicting);
finder.HideShortcut(Shortcut);
shortcutsManagementOptionsPanel.ExpandAll();
shortcutsManagementOptionsPanel.SelectFirstVisibleShortcut(false);
}
/// <summary>
/// Executed when adding or removing gestures used to call modified shortcut
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event arguments</param>
void Gestures_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
FilterSimilarShortcuts();
}
/// <summary>
/// Executed when "Remove" button next to gesture is pressed
/// </summary>
/// <param name="sender">Object sender</param>
/// <param name="e">Event arguments</param>
private void removeGestureButton_Click(object sender, RoutedEventArgs e)
{
var tag = ((Button) sender).Tag as InputGesture;
Shortcut.Gestures.Remove(tag);
}
/// <summary>
/// Executed when "Add Gesture" button is clicked
/// </summary>
/// <param name="sender">Object sender</param>
/// <param name="e">Event arguments</param>
private void addGestureButton_Click(object sender, RoutedEventArgs e)
{
// Check if any chords are entered
if (gestureTextBox.Gesture == null) {
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.ModificationWindow.AdditionFailedNoChords}"), NotificationType.Failed);
return;
}
// Check whether first chord is unfinished
var partialKeyGesture = gestureTextBox.Gesture as PartialKeyGesture;
if (partialKeyGesture != null && !partialKeyGesture.IsFull) {
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.ModificationWindow.AdditionFailedFirstChordIsIncomplete}"), NotificationType.Failed);
return;
}
// Check whether last chord is finished
var multiKeyGesture = gestureTextBox.Gesture as MultiKeyGesture;
if (multiKeyGesture != null && multiKeyGesture.Chords.Last().Key == Key.None) {
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.ModificationWindow.AdditionFailedLastChordIsIncompete}"), NotificationType.Failed);
return;
}
// Check whether gesture exist in shortcut gestures collection
foreach (var existingGesture in Shortcut.Gestures) {
if (gestureTextBox.Gesture.IsTemplateFor(existingGesture, GestureCompareMode.ExactlyMatches)) {
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.ModificationWindow.AddingExistingGesture}"), NotificationType.Failed);
return;
}
}
// Add gesture
if (partialKeyGesture != null) {
try {
var keyGesture = new KeyGesture(partialKeyGesture.Key, partialKeyGesture.Modifiers);
Shortcut.Gestures.Add(keyGesture);
} catch (NotSupportedException) {
Shortcut.Gestures.Add(partialKeyGesture);
}
} else {
Shortcut.Gestures.Add(gestureTextBox.Gesture);
}
DisplayNotification(StringParser.Parse("${res:ShortcutsManagement.ModificationWindow.AdditionIsSuccessfull}"), NotificationType.Added);
}
/// <summary>
/// Executed when "Remove" button next to similar shortcut is pressed
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event argument</param>
private void shortcutsManagementOptionsPanel_RemoveShortcutClick(object sender, RoutedRemoveShortcutEventArgs e)
{
e.Handled = true;
// Remove gestures registered in modified shortcut from deleted shortcut
var removedShortcutGestures = e.RemovedShortcut.Gestures;
for (int i = removedShortcutGestures.Count - 1; i >= 0; i--) {
foreach (var modifiedInputGesture in Shortcut.Gestures) {
if (removedShortcutGestures[i].IsTemplateFor(modifiedInputGesture, GestureCompareMode.StartsWith)) {
removedShortcutGestures.RemoveAt(i);
modifiedShortcuts.Add(e.RemovedShortcut);
break;
}
}
}
FilterSimilarShortcuts();
}
/// <summary>
/// Save changes to shortcuts
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event arguments</param>
private void saveButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
/// <summary>
/// Display message describing shortcut addition result
/// </summary>
/// <param name="notificationText">Displayed message text</param>
/// <param name="type">Message type</param>
public void DisplayNotification(string notificationText, NotificationType type)
{
gestureTextBox.NotificationText = notificationText;
gestureTextBox.NotificationType = type;
}
/// <summary>
/// Execute this method when Reset button is clicked.
///
/// Modifications are not saved
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event arguments</param>
private void resetButton_Click(object sender, RoutedEventArgs e)
{
Close();
}
void DefaultButton_Click(object sender, RoutedEventArgs e)
{
Shortcut.ResetToDefaults();
}
}
}

52
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutsManagementOptionsPanel.xaml

@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
<UserControl x:Class="ICSharpCode.ShortcutsManagement.Dialogs.ShortcutsManagementOptionsPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="http://icsharpcode.net/sharpdevelop/core"
xmlns:Dialogs="clr-namespace:ICSharpCode.ShortcutsManagement.Dialogs"
xmlns:Converters="clr-namespace:ICSharpCode.ShortcutsManagement.Converters"
xmlns:Presentation="clr-namespace:ICSharpCode.Core.Presentation;assembly=ICSharpCode.Core.Presentation"
xmlns:Data="clr-namespace:ICSharpCode.ShortcutsManagement.Data"
x:Name="_this">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml" />
</ResourceDictionary.MergedDictionaries>
<Converters:ProfilesComboBoxItemStyleSelector x:Key="ProfilesComboBoxItemStyleSelector" />
<DataTemplate DataType="{x:Type Presentation:UserGestureProfile}">
<TextBlock Text="{Binding Converter={StaticResource ProfileToStringConverter}}" Margin="5" />
</DataTemplate>
<DataTemplate DataType="{x:Type Data:UserGestureProfileAction}">
<TextBlock Text="{Binding Path=Text}" />
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<WrapPanel HorizontalAlignment="Right" Grid.Row="0" Margin="0,3">
<Label Content="{core:Localize ShortcutsManagement.ShortcutsManagementOptionsPanel.ProfilesLabel}" />
<ComboBox
ItemContainerStyleSelector="{StaticResource ProfilesComboBoxItemStyleSelector}"
x:Name="profilesTextBox"
Width="150"
Height="30"
ItemsSource="{Binding}"
SelectionChanged="profilesTextBox_SelectionChanged"
/>
</WrapPanel>
<Dialogs:ShortcutsTreeView Grid.Row="1"
x:Name="shortcutsManagementOptionsPanel"
IsSearchable="True"
ShortcutModified="shortcutsManagementOptionsPanel_ShortcutModified"
Height="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentPresenter}}, Path=ActualHeight, Converter={StaticResource AddidionConverter}, ConverterParameter=-40}" />
</Grid>
</UserControl>

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

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

93
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutsTreeView.xaml

@ -0,0 +1,93 @@ @@ -0,0 +1,93 @@
<UserControl x:Class="ICSharpCode.ShortcutsManagement.Dialogs.ShortcutsTreeView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:Data="clr-namespace:ICSharpCode.ShortcutsManagement.Data"
xmlns:Dialogs="clr-namespace:ICSharpCode.ShortcutsManagement.Dialogs"
xmlns:Extensions="clr-namespace:ICSharpCode.ShortcutsManagement.Extensions"
mc:Ignorable="d"
x:Name="_this"
d:DesignHeight="300" d:DesignWidth="300" >
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Tree view -->
<TreeView x:Name="shortcutsTreeView" ItemsSource="{Binding}" ItemContainerStyle="{StaticResource ShortcutsTreeItem}" Grid.Column="0" Grid.Row="0" FocusManager.FocusedElement="{Binding ElementName=searchTextBox}" PreviewKeyDown="shortcutsTreeView_PreviewKeyDown">
<TreeView.Resources>
<!-- Tree view add-in data template -->
<HierarchicalDataTemplate DataType="{x:Type Data:AddIn}" ItemsSource="{Binding Path=Categories}" >
<TextBlock Text="{Binding Path=Name}" Extensions:TextBlockBehavior.SearchedText="{Binding ElementName=searchTextBox, Path=Text}" />
</HierarchicalDataTemplate>
<!-- Tree view category data template -->
<HierarchicalDataTemplate DataType="{x:Type Data:ShortcutCategory}" >
<HierarchicalDataTemplate.ItemsSource>
<MultiBinding Converter="{StaticResource ShortcutsTreeConverter}">
<Binding Path="SubCategories" />
<Binding Path="Shortcuts" />
</MultiBinding>
</HierarchicalDataTemplate.ItemsSource>
<TextBlock Text="{Binding Path=Name}" Extensions:TextBlockBehavior.SearchedText="{Binding ElementName=searchTextBox, Path=Text}" />
</HierarchicalDataTemplate>
<!-- Tree view shortcut data template -->
<HierarchicalDataTemplate DataType="{x:Type Data:Shortcut}" >
<Grid x:Name="shortcutEntry" MouseDown="shortcutEntry_MouseDown" Panel.Background="{Binding Panel.Background, RelativeSource={RelativeSource TemplatedParent}}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" Extensions:TextBlockBehavior.SearchedText="{Binding ElementName=searchTextBox, Path=Text}" Grid.Column="0" />
<TextBlock Text="{Binding Gestures, Converter={StaticResource GesturesListConverter}}" Grid.Column="1" TextAlignment="Right" Padding="20,0,0,0" />
<Button x:Name="removeShortcutButton" Style="{StaticResource RemoveButton}" Visibility="Hidden" Grid.Column="2" Tag="{Binding}" Click="removeShortcutButton_Click" SnapsToDevicePixels="True" />
</Grid>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=_this, Path=IsRemovableShortcutsEnabled}" Value="True">
<Setter Property="Margin" TargetName="removeShortcutButton" Value="10,0,0,0" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=_this, Path=IsRemovableShortcutsEnabled}" Value="True" />
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource TemplatedParent}}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" TargetName="removeShortcutButton" Value="Visible" />
</MultiDataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
<!-- Search box -->
<Border x:Name="searchSection" CornerRadius="0,0,8,8" Padding="2" Background="#FFF" BorderBrush="#888" BorderThickness="1,0,1,1" Grid.Column="0" Grid.Row="1" Visibility="{Binding ElementName=_this, Path=IsSearchable, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=Collapsed}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" x:Name="searchTextBox" TextChanged="searchTextBox_TextChanged" BorderThickness="0" PreviewKeyDown="searchTextBox_PreviewKeyDown" />
<Dialogs:MultiKeyGestureTextBox Grid.Column="0" x:Name="gestureTextBox" NotificationVisibility="Collapsed" TextBoxBorderThickness="0" Visibility="{Binding ElementName=searchTypeToggleButton, Path=IsChecked, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=Hidden}" GestureChanged="gestureTextBox_GestureChanged" PreviewKeyDown="searchTextBox_PreviewKeyDown" />
<ToggleButton x:Name="searchTypeToggleButton" Grid.Column="1" Style="{StaticResource KeyToggleButton}" ClickMode="Press" Click="searchTypeToggleButton_Click" />
</Grid>
</Border>
</Grid>
</UserControl>

320
src/AddIns/Misc/ShortcutsManagement/Src/Dialogs/ShortcutsTreeView.xaml.cs

@ -0,0 +1,320 @@ @@ -0,0 +1,320 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using ICSharpCode.Core.Presentation;
using ICSharpCode.ShortcutsManagement.Data;
using ICSharpCode.ShortcutsManagement.Extensions;
namespace ICSharpCode.ShortcutsManagement.Dialogs
{
/// <summary>
/// This panel is used in SharpDevelop options window to manage shortcuts
/// </summary>
public partial class ShortcutsTreeView : UserControl
{
/// <summary>
/// Identifies <see cref="IsSearchable"/> dependency property
/// </summary>
public static readonly DependencyProperty IsSearchableProperty = DependencyProperty.Register(
"IsSearchable",
typeof(Boolean),
typeof(ShortcutsTreeView),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Gets or sets property specifying whether shortcuts tree can be searched using part of the shortcut's name or
/// gesture
/// </summary>
public Boolean IsSearchable
{
get {
return (Boolean)GetValue(IsSearchableProperty);
}
set {
SetValue(IsSearchableProperty, value);
}
}
/// <summary>
/// Identifies <see cref="IsRemovableShortcutsEnabled" /> dependency property
/// </summary>
public static readonly DependencyProperty IsRemovableShortcutsEnabledProperty = DependencyProperty.Register(
"IsRemovableShortcutsEnabled",
typeof(Boolean),
typeof(ShortcutsTreeView),
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Specify whether shortcuts can be removed from the tree.
///
/// If this value set to true <see cref="RemoveShortcutClick"/> will be Executed when
/// shortcut is deleted
/// </summary>
public Boolean IsRemovableShortcutsEnabled
{
get {
return (Boolean)GetValue(IsSearchableProperty);
}
set {
SetValue(IsSearchableProperty, value);
}
}
/// <summary>
/// Occurs when user tries to remove shortcut from shortcuts tree
/// </summary>
public event RemoveShortcutRoutedHandler RemoveShortcutClick;
/// <summary>
/// List of add-ins containing shortcut categories and shortcuts
/// </summary>
private ICollection<IShortcutTreeEntry> RootEntries
{
get {
return (ICollection<IShortcutTreeEntry>)DataContext;
}
}
/// <summary>
/// Creates new instance of <see cref="ShortcutsTreeView" />
/// </summary>
public ShortcutsTreeView()
{
InitializeComponent();
}
/// <summary>
/// Selects first enabled shortcut in shortcut tree
/// </summary>
/// <param name="setFocus">Set focus to this shortcut entry</param>
public void SelectFirstVisibleShortcut(bool setFocus)
{
var path = new List<IShortcutTreeEntry>();
foreach (var entry in RootEntries) {
if (entry != null && entry.IsVisible) {
path.Add(entry);
FindFirstVisibleItemPath(entry, path);
shortcutsTreeView.SelectItem(path.Cast<object>().ToList(), setFocus);
return;
}
}
}
/// <summary>
/// Find path to first <see cref="IShortcutTreeEntry"/> with <see cref="IShortcutTreeEntry.IsVisible"/> true
/// </summary>
/// <param name="parent">Starting node</param>
/// <param name="path">Accumulated path</param>
private void FindFirstVisibleItemPath(IShortcutTreeEntry parent, List<IShortcutTreeEntry> path)
{
// Find first visible add-in
var addIn = parent as AddIn;
if(addIn != null) {
var selectedCategory = addIn.Categories.FirstOrDefault(a => a.IsVisible);
if (selectedCategory != null) {
path.Add(selectedCategory);
FindFirstVisibleItemPath(selectedCategory, path);
return;
}
}
// Find first visible category
var category = parent as ShortcutCategory;
if (category != null) {
var selectedCategory = category.SubCategories.FirstOrDefault(a => a.IsVisible);
if (selectedCategory != null) {
path.Add(selectedCategory);
FindFirstVisibleItemPath(selectedCategory, path);
return;
}
// Find first visible shortcut
var selectedShortcut = category.Shortcuts.FirstOrDefault(a => a.IsVisible);
if (selectedShortcut != null) {
path.Add(selectedShortcut);
FindFirstVisibleItemPath(selectedShortcut, path);
return;
}
}
}
/// <summary>
/// Expands all elements of the tree
/// </summary>
public void ExpandAll()
{
shortcutsTreeView.SetExpandAll(true);
}
/// <summary>
/// Executed when user starts to type inside shortcuts tree
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event arguments</param>
private void shortcutsTreeView_PreviewKeyDown(object sender, KeyEventArgs e)
{
// If not navigating tree set focus to search text box
var keyboardDevice = (KeyboardDevice)e.Device;
if (keyboardDevice.Modifiers != ModifierKeys.None || Array.IndexOf(new[] { Key.Up, Key.Right, Key.Down, Key.Left }, e.Key) < 0) {
searchTextBox.Text = "";
Keyboard.Focus(searchTextBox);
return;
}
}
/// <summary>
/// Executed when user tries to remove a shortcut from shortcut tree
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event arguments</param>
private void removeShortcutButton_Click(object sender, RoutedEventArgs e)
{
if(RemoveShortcutClick != null) {
var removeButton = (Button) sender;
var routedRemoveShortcutEventArgs = new RoutedRemoveShortcutEventArgs(e.RoutedEvent, e.OriginalSource, (Shortcut)removeButton.Tag);
// Forward event
RemoveShortcutClick.Invoke(sender, routedRemoveShortcutEventArgs);
}
}
/// <summary>
/// Executed when user changes text in search textbox
/// </summary>
/// <param name="sender">Object sender</param>
/// <param name="e">Event arguments</param>
private void searchTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (!searchTypeToggleButton.IsChecked.HasValue || searchTypeToggleButton.IsChecked.Value) return;
new ShortcutsFinder(RootEntries).Filter(searchTextBox.Text);
if (!string.IsNullOrEmpty(searchTextBox.Text)) {
SelectFirstVisibleShortcut(false);
} else {
shortcutsTreeView.SetExpandAll(false);
}
}
/// <summary>
/// Executed when changing search type
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event arguments</param>
private void searchTypeToggleButton_Click(object sender, RoutedEventArgs e)
{
searchTextBox.Text = "";
gestureTextBox.shortcutTextBox.Text = "";
new ShortcutsFinder(RootEntries).Filter("");
shortcutsTreeView.SetExpandAll(false);
if(!searchTypeToggleButton.IsChecked.HasValue || !searchTypeToggleButton.IsChecked.Value) {
Keyboard.Focus(searchTextBox);
} else {
Keyboard.Focus(gestureTextBox.shortcutTextBox);
}
}
/// <summary>
/// Occurs when shortcut is modified
/// </summary>
public event EventHandler ShortcutModified;
/// <summary>
/// Executed when user presses a key inside search box
/// </summary>
/// <param name="sender">Sender object </param>
/// <param name="e">Event arguments</param>
private void searchTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
var keyboardDevice = (KeyboardDevice)e.Device;
// If Up/Down is pressed switch focus to shortcuts tree
if (keyboardDevice.Modifiers == ModifierKeys.None && Array.IndexOf(new[] { Key.Up, Key.Down }, e.Key) >= 0) {
SelectFirstVisibleShortcut(true);
return;
}
// If enter is pressed open shortcut configuration
if (keyboardDevice.Modifiers == ModifierKeys.None && e.Key == Key.Enter && shortcutsTreeView.SelectedItem is Shortcut) {
e.Handled = true;
if(ShortcutModified != null) {
ShortcutModified.Invoke(sender, null);
}
return;
}
}
/// <summary>
/// Raised if gestures entered in gesture text box change
/// </summary>
/// <param name="sender">Senrer object</param>
/// <param name="e">Event arguments</param>
private void gestureTextBox_GestureChanged(object sender, EventArgs e)
{
// Exit if filtering by text (Handled in searchTextBox_TextChanged)
if (searchTypeToggleButton.IsChecked.HasValue && !searchTypeToggleButton.IsChecked.Value) {
return;
}
if (gestureTextBox.Gesture != null) {
new ShortcutsFinder(RootEntries).FilterGesture(gestureTextBox.Gesture, GestureCompareMode.PartlyMatches);
SelectFirstVisibleShortcut(false);
} else {
new ShortcutsFinder(RootEntries).Filter("");
}
}
/// <summary>
/// Executed when user double click on shortcut tree item
/// </summary>
/// <param name="sender">Sender object</param>
/// <param name="e">Event arguments</param>
private void shortcutEntry_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2) {
if (shortcutsTreeView.SelectedItem is Shortcut) {
if(ShortcutModified != null) {
ShortcutModified.Invoke(sender, null);
}
}
}
}
}
public delegate void RemoveShortcutRoutedHandler(object sender, RoutedRemoveShortcutEventArgs args);
/// <summary>
/// Contains state information and event data associated with <see cref="RemoveShortcutRoutedHandler"/>
/// </summary>
public class RoutedRemoveShortcutEventArgs : RoutedEventArgs
{
/// <summary>
/// Reference to shortcut being removed
/// </summary>
public Shortcut RemovedShortcut
{
get;
private set;
}
/// <summary>
/// Creates new isntance of <see cref="RoutedRemoveShortcutEventArgs" />
/// </summary>
/// <param name="routedEvent">Associated routed event</param>
/// <param name="source">Source which will be reported when event is handled</param>
/// <param name="removedShortcut">Shortcut being removed</param>
public RoutedRemoveShortcutEventArgs(RoutedEvent routedEvent, object source, Shortcut removedShortcut)
: base(routedEvent, source)
{
RemovedShortcut = removedShortcut;
}
}
}

90
src/AddIns/Misc/ShortcutsManagement/Src/Extensions/TextBlockBehavior.cs

@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
namespace ICSharpCode.ShortcutsManagement.Extensions
{
/// <summary>
/// Contains <see cref="TextBlock"/> attached properties
/// </summary>
public static class TextBlockBehavior
{
/// <summary>
/// Gets "TextBlockBehavior.SearchedText" attached property value
/// </summary>
/// <param name="textBlock">Attached property host</param>
/// <returns>Attached property value</returns>
public static string GetSearchedText(TextBlock textBlock)
{
return (string)textBlock.GetValue(SearchedTextProperty);
}
/// <summary>
/// Set "TextBlockBehavior.SearchedText" attached property value
/// </summary>
/// <param name="textBlock">Attached property host</param>
/// <param name="value">New attached property value</param>
public static void SetSearchedText(TextBlock textBlock, string value)
{
textBlock.SetValue(SearchedTextProperty, value);
}
/// <summary>
/// Identifies SearchedText dependency property
/// </summary>
public static readonly DependencyProperty SearchedTextProperty =
DependencyProperty.RegisterAttached(
"SearchedText",
typeof(string),
typeof(TextBlockBehavior),
new UIPropertyMetadata(null, OnSearchedTextChanged));
/// <summary>
/// On SearchedText changed highlight text in TextBlock which matches
/// attached property value
/// </summary>
/// <param name="depObj"></param>
/// <param name="e"></param>
private static void OnSearchedTextChanged(DependencyObject depObj, DependencyPropertyChangedEventArgs e)
{
var textBlock = (TextBlock) depObj;
var textBlockText = textBlock.Text;
// Remove all text from text block
textBlock.Inlines.Clear();
// Split text contained in text block to three parts: before the match, the match and after the match
var matches = Regex.Matches(textBlockText, @"(.*)(" + Regex.Escape((string)e.NewValue) + @")(.*)", RegexOptions.IgnoreCase);
if (matches.Count > 0) {
foreach (Match match in matches) {
// Add what is found before match back to the block without modifications
var matchedTextPrefix = match.Groups[1].Value;
if (!string.IsNullOrEmpty(matchedTextPrefix)) {
textBlock.Inlines.Add(new Run(matchedTextPrefix));
}
// Higlight the match and add back to textblock
var matchedText = match.Groups[2].Value;
if (!string.IsNullOrEmpty(matchedText)) {
var matchedRun = new Run(matchedText);
matchedRun.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#CEDEF7"));
matchedRun.Foreground = new SolidColorBrush((Color) ColorConverter.ConvertFromString("#000000"));
textBlock.Inlines.Add(matchedRun);
}
// Add what is found after match back to the block without modifications
var matchedTextSuffix = match.Groups[3].Value;
if (!string.IsNullOrEmpty(matchedTextSuffix)) {
textBlock.Inlines.Add(new Run(matchedTextSuffix));
}
}
} else {
// If filter string is not found put the original text back without modifications
textBlock.Inlines.Add(new Run(textBlockText));
}
}
}
}

81
src/AddIns/Misc/ShortcutsManagement/Src/Extensions/TreeViewExtensions.cs

@ -0,0 +1,81 @@ @@ -0,0 +1,81 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
namespace ICSharpCode.ShortcutsManagement.Extensions
{
/// <summary>
/// <see cref="TreeView"/> extention methods
/// </summary>
public static class TreeViewExtensions
{
/// <summary>
/// Expand TreeView items according to provided path and select element
/// on the lowest level
/// </summary>
/// <param name="parentContainer">TreeView instance</param>
/// <param name="path">Path to the selected item</param>
/// <param name="setFocus"></param>
public static void SelectItem(this ItemsControl parentContainer, List<object> path, bool setFocus)
{
if(path == null || path.Count == 0) {
return;
}
var head = path.First();
var tail = path.GetRange(1, path.Count - 1);
// Get TreeViewItem which wraps first element from path
var itemContainer = parentContainer.ItemContainerGenerator.ContainerFromItem(head) as TreeViewItem;
if (itemContainer != null && itemContainer.Items.Count == 0) {
// If item container doesn't have any sub-elements select it
itemContainer.IsSelected = true;
if(setFocus) {
Keyboard.Focus(itemContainer);
}
var selectMethod = typeof(TreeViewItem).GetMethod("Select", BindingFlags.NonPublic | BindingFlags.Instance);
selectMethod.Invoke(itemContainer, new object[] { true });
} else if (itemContainer != null) {
// If item container have sub-elements expand it and select item from this container
itemContainer.IsExpanded = true;
if (itemContainer.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) {
// If item container is not generated yet register a delegate which would be called when container is generated
itemContainer.ItemContainerGenerator.StatusChanged += delegate {
SelectItem(itemContainer, tail, setFocus);
};
} else {
// If item container already generated select sub-element from this container
SelectItem(itemContainer, tail, setFocus);
}
}
}
/// <summary>
/// Expand/Collapse all tree view items
/// </summary>
/// <param name="parentContainer">TreeView or TreeViewItem</param>
/// <param name="value">True - expand, False - collapse</param>
public static void SetExpandAll(this ItemsControl parentContainer, bool value)
{
foreach (Object item in parentContainer.Items) {
var currentContainer = parentContainer.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
if (currentContainer != null && currentContainer.Items.Count > 0) {
currentContainer.IsExpanded = value;
if (currentContainer.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated) {
currentContainer.ItemContainerGenerator.StatusChanged += delegate { SetExpandAll(currentContainer, value); };
} else {
SetExpandAll(currentContainer, value);
}
}
}
}
}
}

5
src/AddIns/Misc/ShortcutsManagement/Themes/Generic.xaml

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</ResourceDictionary>

1
src/AddIns/Misc/StartPage/Project/Src/StartPageControl.xaml

@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
Source="../Resources/balken_mitte.gif" />
</DockPanel>
<ItemsControl
Focusable="False"
Name="startPageItems"
Grid.Row="1">
<ItemsControl.ItemsPanel>

2
src/AddIns/Misc/UnitTesting/UnitTesting.addin

@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
category = "Tools"
title = "${res:ICSharpCode.NUnitPad.NUnitPadContent.PadName}"
icon = "PadIcons.NUnitTest"
shortcut = "Control|Alt|T"
shortcut = "Ctrl+Alt+T"
class = "ICSharpCode.UnitTesting.UnitTestsPad"
defaultPosition = "Right, Hidden" />
</Path>

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@
<WarningLevel>4</WarningLevel>
<OutputPath>..\..\..\..\bin\</OutputPath>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<SourceAnalysisOverrideSettingsFile>C:\Documents and Settings\Administrator\Application Data\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugType>Full</DebugType>

5
src/Main/Base/Project/Src/Commands/AutostartCommands.cs

@ -125,14 +125,15 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -125,14 +125,15 @@ namespace ICSharpCode.SharpDevelop.Commands
//WorkbenchSingleton.MainForm.Focus(); // windows.forms focus workaround
ParserService.StartParserThread();
// finally run the workbench window ...
//Application.AddMessageFilter(new FormKeyHandler());
//Application.Run(WorkbenchSingleton.MainForm);
App application = new App();
System.Windows.Forms.Integration.WindowsFormsHost.EnableWindowsFormsInterop();
application.Run(WorkbenchSingleton.MainWindow);
// save the workbench memento in the ide properties
try {
PropertyService.Set(workbenchMemento, WorkbenchSingleton.Workbench.CreateMemento());

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

@ -6,11 +6,13 @@ @@ -6,11 +6,13 @@
// </file>
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Windows;
using System.Windows.Input;
using System.Windows.Controls;
using ICSharpCode.Core;
@ -198,16 +200,58 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -198,16 +200,58 @@ namespace ICSharpCode.SharpDevelop.Commands
public class ToolMenuBuilder : IMenuItemBuilder
{
private static InputBindingCategory externalToolsCategory;
static ToolMenuBuilder()
{
var categoryName = StringParser.Parse("External tools");
externalToolsCategory = new InputBindingCategory("/MainMenu/Tools/ExternalTools", categoryName);
ICSharpCode.Core.Presentation.SDCommandManager.RegisterInputBindingCategory(externalToolsCategory);
}
private bool bindingsAssigned = false;
public ICollection BuildItems(Codon codon, object owner)
{
var items = new System.Windows.Controls.MenuItem[ToolLoader.Tool.Count];
for (int i = 0; i < ToolLoader.Tool.Count; ++i) {
ExternalTool tool = ToolLoader.Tool[i];
items[i] = new System.Windows.Controls.MenuItem {
Header = tool.ToString()
};
items[i].Click += delegate { RunTool(tool); };
items[i] = new System.Windows.Controls.MenuItem();
var routedCommandName = "SDToolsCommands.RunExternalTool_" + tool.ToString();
var routedCommandText = MenuService.ConvertLabel(StringParser.Parse(tool.ToString()));
if(!bindingsAssigned) {
var addIn = AddInTree.AddIns.FirstOrDefault(a => a.Name == "SharpDevelop");
// Dynamicaly create routed UI command to loaded pad and bindings for it
SDCommandManager.RegisterRoutedUICommand(routedCommandName, routedCommandText);
var commandBindingInfo = new CommandBindingInfo();
commandBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
commandBindingInfo.RoutedCommandName = routedCommandName;
commandBindingInfo.CanExecuteEventHandler = delegate(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; };
commandBindingInfo.ExecutedEventHandler = delegate { RunTool(tool); };
SDCommandManager.RegisterCommandBindingInfo(commandBindingInfo);
var inputBindingInfo = new InputBindingInfo();
inputBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
inputBindingInfo.RoutedCommandName = routedCommandName;
inputBindingInfo.Categories.Add(externalToolsCategory);
SDCommandManager.RegisterInputBindingInfo(inputBindingInfo);
}
var gesturesTemplate = BindingInfoTemplate.Create(null, SDCommandManager.DefaultOwnerTypeName, routedCommandName);
var updatedGestures = SDCommandManager.FindInputGestures(gesturesTemplate, null);
var updatedGesturesText = (string)new InputGestureCollectionConverter().ConvertToInvariantString(updatedGestures);
items[i].InputGestureText = updatedGesturesText;
items[i].Command = SDCommandManager.GetRoutedUICommand(routedCommandName);
items[i].Header = StringParser.Parse(tool.ToString());
}
bindingsAssigned = true;
return items;
}
@ -455,6 +499,8 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -455,6 +499,8 @@ namespace ICSharpCode.SharpDevelop.Commands
get;
}
public List<string> bindingsAssigned = new List<string>();
public ICollection BuildItems(Codon codon, object owner)
{
ArrayList list = new ArrayList();
@ -465,14 +511,52 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -465,14 +511,52 @@ namespace ICSharpCode.SharpDevelop.Commands
if (!string.IsNullOrEmpty(padContent.Icon)) {
item.Icon = PresentationResourceService.GetImage(padContent.Icon);
}
item.Command = new BringPadToFrontCommand(padContent);
if (!string.IsNullOrEmpty(padContent.Shortcut)) {
var kg = Core.Presentation.MenuService.ParseShortcut(padContent.Shortcut);
WorkbenchSingleton.MainWindow.InputBindings.Add(
new System.Windows.Input.InputBinding(item.Command, kg)
);
item.InputGestureText = kg.GetDisplayStringForCulture(Thread.CurrentThread.CurrentUICulture);
}
var routedCommandName = "SDViewCommands.ShowView_" + padContent.Class;
var routedCommandText = MenuService.ConvertLabel(StringParser.Parse(padContent.Title));
// TODO: fix this hack
if(!bindingsAssigned.Contains(routedCommandName)) {
var addIn = AddInTree.AddIns.FirstOrDefault(a => a.Name == "SharpDevelop");
// Dynamicaly create routed UI command to loaded pad and bindings for it
SDCommandManager.RegisterRoutedUICommand(routedCommandName, routedCommandText);
SDCommandManager.LoadCommand(routedCommandName, new BringPadToFrontCommand(padContent));
var commandBindingInfo = new CommandBindingInfo();
commandBindingInfo.CommandTypeName = routedCommandName;
commandBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
commandBindingInfo.RoutedCommandName = routedCommandName;
commandBindingInfo.AddIn = addIn;
SDCommandManager.RegisterCommandBindingInfo(commandBindingInfo);
var gestures = InputGestureCollectionConverter.Parse(padContent.Shortcut, padContent.Class);
var inputBindingInfo = new InputBindingInfo();
inputBindingInfo.OwnerTypeName = SDCommandManager.DefaultOwnerTypeName;
inputBindingInfo.RoutedCommandName = routedCommandName;
inputBindingInfo.DefaultGestures.AddRange(gestures);
var categoryPath = "/MainMenu/View" + (Category == padContent.Category && padContent.Category != "Main" ? "/" + padContent.Category : "");
var category = ICSharpCode.Core.Presentation.SDCommandManager.GetInputBindingCategory(categoryPath, false);
if(category == null) {
category = new InputBindingCategory(categoryPath, padContent.Category);
ICSharpCode.Core.Presentation.SDCommandManager.RegisterInputBindingCategory(category);
}
inputBindingInfo.Categories.Add(category);
inputBindingInfo.AddIn = addIn;
SDCommandManager.RegisterInputBindingInfo(inputBindingInfo);
bindingsAssigned.Add(routedCommandName);
}
item.Command = SDCommandManager.GetRoutedUICommand(routedCommandName);
var gesturesTemplate = BindingInfoTemplate.Create(null, SDCommandManager.DefaultOwnerTypeName, routedCommandName);
var updatedGestures = SDCommandManager.FindInputGestures(gesturesTemplate, null);
var updatedGesturesText = (string)new InputGestureCollectionConverter().ConvertToInvariantString(updatedGestures);
item.InputGestureText = updatedGesturesText;
list.Add(item);
}

23
src/Main/Base/Project/Src/Commands/ToolsCommands.cs

@ -8,10 +8,33 @@ @@ -8,10 +8,33 @@
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.SharpDevelop.Gui;
using System.Windows.Input;
namespace ICSharpCode.SharpDevelop.Commands
{
public class TestCommand : System.Windows.Input.ICommand
{
public event EventHandler CanExecuteChanged
{
add {}
remove {}
}
public void Execute(object parameter)
{
SDCommandManager.GetRoutedUICommand("SDBuildCommands.BuildSolution").Execute(parameter, WorkbenchSingleton.MainWindow);
System.Windows.MessageBox.Show("test");
}
public bool CanExecute(object parameter)
{
return true;
}
}
public class OptionsCommand : AbstractMenuCommand
{
public static bool? ShowTabbedOptions(string dialogTitle, AddInTreeNode node)

48
src/Main/Base/Project/Src/Gui/Dialogs/TreeViewOptionsDialog.xaml

@ -38,31 +38,31 @@ @@ -38,31 +38,31 @@
</TreeView.ItemTemplate>
</TreeView>
<GridSplitter Width="2" />
<ScrollViewer Name="optionPanelScrollViewer"
Grid.Column="1"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<DockPanel>
<TextBlock
DockPanel.Dock="Top"
Name="optionPanelTitle"
FontFamily="Tahoma" FontSize="14pt" FontWeight="Bold"
Padding="8"
>
<TextBlock.Background>
<LinearGradientBrush StartPoint="0, 0" EndPoint="0, 1">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.0"
Color="{DynamicResource {x:Static SystemColors.WindowColorKey}}" />
<GradientStop Offset="1.0"
Color="{DynamicResource {x:Static SystemColors.ControlColorKey}}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</TextBlock.Background>
</TextBlock>
<DockPanel Grid.Column="1">
<TextBlock
DockPanel.Dock="Top"
Name="optionPanelTitle"
FontFamily="Tahoma" FontSize="14pt" FontWeight="Bold"
Padding="8"
>
<TextBlock.Background>
<LinearGradientBrush StartPoint="0, 0" EndPoint="0, 1">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.0"
Color="{DynamicResource {x:Static SystemColors.WindowColorKey}}" />
<GradientStop Offset="1.0"
Color="{DynamicResource {x:Static SystemColors.ControlColorKey}}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</TextBlock.Background>
</TextBlock>
<ScrollViewer Name="optionPanelScrollViewer"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<ContentPresenter Name="optionPanelContent" />
</DockPanel>
</ScrollViewer>
</ScrollViewer>
</DockPanel>
</Grid>
<Button
Content="{core:Localize Global.OKButtonText}"

3
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonPadContent.cs

@ -84,6 +84,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -84,6 +84,9 @@ namespace ICSharpCode.SharpDevelop.Gui
if (padInstance != null) {
this.SetContent(padInstance.Control, padInstance);
placeholder = null;
var contextName = padInstance.GetType().FullName;
SDCommandManager.RegisterNamedUIElement(contextName, (UIElement)Content);
}
}
}

9
src/Main/Base/Project/Src/Gui/Workbench/Layouts/AvalonWorkbenchWindow.cs

@ -118,6 +118,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -118,6 +118,11 @@ namespace ICSharpCode.SharpDevelop.Gui
}
oldActiveViewContent = newActiveViewContent;
CommandManager.InvalidateRequerySuggested();
if (newActiveViewContent != null) {
string ownerName = SDCommandManager.GetShortAssemblyQualifiedName(newActiveViewContent.GetType());
SDCommandManager.RegisterNamedUIElement(ownerName, (UIElement)Content);
}
}
sealed class ViewContentCollection : Collection<IViewContent>
@ -294,7 +299,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -294,7 +299,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void OnIsDirtyChanged(object sender, EventArgs e)
{
UpdateTitle();
CommandManager.InvalidateRequerySuggested();
System.Windows.Input.CommandManager.InvalidateRequerySuggested();
}
void UpdateTitle()
@ -399,7 +404,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -399,7 +404,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
base.OnClosed();
Dispose();
CommandManager.InvalidateRequerySuggested();
System.Windows.Input.CommandManager.InvalidateRequerySuggested();
}
void RefreshTabPageTexts()

22
src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs

@ -76,7 +76,25 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -76,7 +76,25 @@ namespace ICSharpCode.SharpDevelop.Gui
}
public void Initialize()
{
{
// Use shortened assembly qualified name to not lose user defined gestures
// when sharp develop is updated
SDCommandManager.DefaultOwnerTypeName = SDCommandManager.GetShortAssemblyQualifiedName(GetType());
SDCommandManager.RegisterNamedUIType(SDCommandManager.DefaultOwnerTypeName, GetType());
CommandsService.RegisterBuiltInRoutedUICommands();
CommandsService.RegisterRoutedCommands(typeof(ICSharpCode.AvalonEdit.AvalonEditCommands));
// Load all commands and and key bindings from addin tree
CommandsService.RegisterInputBindingCategories(this, "/SharpDevelop/CommandManager/InputBindingCategories");
CommandsService.RegisterRoutedUICommands(this, "/SharpDevelop/CommandManager/RoutedUICommands");
CommandsService.RegisterMenuBindings(this, "/SharpDevelop/CommandManager/MenuLocations");
CommandsService.RegisterCommandBindings(this, "/SharpDevelop/CommandManager/CommandBindings");
CommandsService.RegisterInputBindings(this, "/SharpDevelop/CommandManager/InputBindings");
// Register context and load all commands from addin
SDCommandManager.LoadAddinCommands(AddInTree.AddIns.FirstOrDefault(a => a.Name == "SharpDevelop"));
foreach (PadDescriptor content in AddInTree.BuildItems<PadDescriptor>(viewContentPath, this, false)) {
if (content != null) {
ShowPad(content);
@ -106,7 +124,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -106,7 +124,7 @@ namespace ICSharpCode.SharpDevelop.Gui
FileService.FileRenamed += FileService.RecentOpen.FileRenamed;
requerySuggestedEventHandler = new EventHandler(CommandManager_RequerySuggested);
CommandManager.RequerySuggested += requerySuggestedEventHandler;
System.Windows.Input.CommandManager.RequerySuggested += requerySuggestedEventHandler;
ResourceService.LanguageChanged += OnLanguageChanged;
StatusBarService.SetMessage("${res:MainWindow.StatusBar.ReadyMessage}");

2
src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs

@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop @@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop
/// "View -&gt; Debugger" menu.
/// </attribute>
/// <attribute name="shortcut" use="optional">
/// Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T").
/// Shortcut that activates the 'Show pad' command (e.g. "Ctrl+Alt+T").
/// </attribute>
/// <usage>Only in /Workspace/Parser</usage>
/// <returns>

18
src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs

@ -9,6 +9,7 @@ using System; @@ -9,6 +9,7 @@ using System;
using System.Collections;
using System.Reflection;
using System.Windows.Forms;
using ICSharpCode.Core.WinForms;
using ICSharpCode.Core;
using ICSharpCode.TextEditor.Actions;
@ -19,8 +20,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons @@ -19,8 +20,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
/// Creates IEditAction objects for the text editor.
/// </summary>
/// <attribute name="keys" use="required">
/// Comma-separated list of keyboard shortcuts that activate the edit action.
/// E.g. "Control|C,Control|Insert"
/// semicolon-separated list of keyboard shortcuts that activate the edit action.
/// E.g. "Ctrl+C;Ctrl+Insert"
/// </attribute>
/// <attribute name="class" use="required">
/// Name of the IEditAction class.
@ -44,17 +45,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons @@ -44,17 +45,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
public object BuildItem(object caller, Codon codon, ArrayList subItems)
{
IEditAction editAction = (IEditAction)codon.AddIn.CreateObject(codon.Properties["class"]);
string[] keys = codon.Properties["keys"].Split(',');
Keys[] actionKeys = new Keys[keys.Length];
for (int j = 0; j < keys.Length; ++j) {
string[] keydescr = keys[j].Split('|');
Keys key = (Keys)((System.Windows.Forms.Keys.Space.GetType()).InvokeMember(keydescr[0], BindingFlags.GetField, null, System.Windows.Forms.Keys.Space, new object[0]));
for (int k = 1; k < keydescr.Length; ++k) {
key |= (Keys)((System.Windows.Forms.Keys.Space.GetType()).InvokeMember(keydescr[k], BindingFlags.GetField, null, System.Windows.Forms.Keys.Space, new object[0]));
}
actionKeys[j] = key;
}
var actionKeys = (Keys[])new KeysCollectionConverter().ConvertFrom(codon.Properties["keys"]);
editAction.Keys = actionKeys;
return editAction;

12
src/Main/Core/Project/ICSharpCode.Core.csproj

@ -60,6 +60,16 @@ @@ -60,6 +60,16 @@
<Compile Include="Src\AddInTree\AddIn\Codon.cs" />
<Compile Include="Src\AddInTree\AddIn\ComplexCondition.cs" />
<Compile Include="Src\AddInTree\AddIn\Condition.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\Command\CommandBindingInfoDescriptor.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\Command\CommandBindingInfoDoozer.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\Command\InputBindingCategoryDescriptor.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\Command\InputBindingInfoDescriptor.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\Command\InputBindingInfoDoozer.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\Command\InputBindingCategoryDoozer.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\Command\RoutedUICommandDescriptor.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\Command\RoutedUICommandDoozer.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\MenuItem\MenuLocationDescriptor.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\MenuItem\MenuLocationDoozer.cs" />
<Compile Include="Src\AddInTree\AddIn\ExtensionPath.cs" />
<Compile Include="Src\AddInTree\AddIn\IConditionEvaluator.cs" />
<Compile Include="Src\AddInTree\AddIn\ICondition.cs" />
@ -110,6 +120,7 @@ @@ -110,6 +120,7 @@
<Compile Include="Src\Util\AbstractCommand.cs" />
<Compile Include="Src\Util\CallbackOnDispose.cs" />
<Compile Include="Src\Util\DebugTextWriter.cs" />
<Compile Include="Src\Util\ExtensionMethods.cs" />
<Compile Include="Src\Util\ICommand.cs" />
<Compile Include="Src\AddInTree\AddIn\IBuildItemsModifier.cs" />
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\IncludeDoozer.cs" />
@ -126,6 +137,7 @@ @@ -126,6 +137,7 @@
<Compile Include="Src\AddInTree\AddIn\DefaultDoozers\ToolBarItem\ITextBoxCommand.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Src\AddInTree\AddIn\DefaultDoozers\Command" />
<Folder Include="Src\Services\LoggingService" />
<Folder Include="Src\Services\AnalyticsMonitor" />
<Folder Include="Src\Services\ResourceService" />

8
src/Main/Core/Project/Src/AddInTree/AddIn/AddIn.cs

@ -63,6 +63,13 @@ namespace ICSharpCode.Core @@ -63,6 +63,13 @@ namespace ICSharpCode.Core
}
bool dependenciesLoaded;
/// <summary>
/// Specifies whether all add-in dependencies and referenced assemblies are loaded
/// </summary>
public bool DependenciesLoaded {
get { return dependenciesLoaded; }
}
void LoadDependencies()
{
@ -245,6 +252,7 @@ namespace ICSharpCode.Core @@ -245,6 +252,7 @@ namespace ICSharpCode.Core
throw new AddInLoadException("Import node requires ONE attribute.");
}
string pathName = reader.GetAttribute(0);
ExtensionPath extensionPath = addIn.GetExtensionPath(pathName);
if (!reader.IsEmptyElement) {
ExtensionPath.SetUp(extensionPath, reader, "Path");

110
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/CommandBindingInfoDescriptor.cs

@ -0,0 +1,110 @@ @@ -0,0 +1,110 @@
using System;
namespace ICSharpCode.Core
{
/// <summary>
/// Describes <see cref="ICSharpCode.Core.Presentation.CommandBindingInfo" />
/// </summary>
public class CommandBindingInfoDescriptor
{
/// <summary>
/// Gets codon used to create this descriptor
/// </summary>
public Codon Codon {
get; private set;
}
/// <summary>
/// Gets full name of the command class (should implement ICSharpCode.Core.ICommand or System.Window.Input.ICommand) containing user instructions associated with
/// <see cref="System.Windows.Input.CommandBinding" />
/// </summary>
public string Class {
get; private set;
}
/// <summary>
/// Gets name of <see cref="System.Window.Input.RoutedUICommand" /> associated with descriptor
/// A name should be associated to a command in code using <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary>
public string Command {
get; private set;
}
/// <summary>
/// Gets overriden routed command text (string visible to user)
///
/// If not provided <see cref="System.Window.Input.RoutedUICommand.Text" /> property value is used
/// </summary>
public string CommandText {
get; private set;
}
/// <summary>
/// Gets name of binding owner type name.
///
/// A name can be assigned to type in code using <see cref="ICSharpCode.Core.Presentation.CommandManager" />.
/// If this property is set then <see cref="OwnerTypeName" /> property can be ignored
/// If neither owner type nor owner instance is specified default owner type is applied
/// </summary>
public string OwnerInstanceName {
get; private set;
}
/// <summary>
/// Name of binding owner instance name.
///
/// A name can be assigned to instance in code using <see cref="ICSharpCode.Core.Presentation.CommandManager" />.
/// If this property is set then <see cref="OwnerInstanceName" /> property can be ignored
/// If neither owner type nor owner instance is specified default owner type is applied
/// </summary>
public string OwnerTypeName {
get; private set;
}
/// <summary>
/// Gets gestures associated with created <see cref="ICSharpCode.Core.Presentation.InputBindingInfo" />
///
/// Optional, if provided input binding info with the same owner will be created
/// </summary>
public string Gestures {
get; private set;
}
/// <summary>
/// Gets list of paths to input binding categories associated with created <see cref="ICSharpCode.Core.Presentation.InputBindingInfo" /> (separated by comma)
///
/// Can only be used together with <see cref="Gestures" /> property
/// </summary>
public string Categories {
get; private set;
}
/// <summary>
/// Lazy loading
///
/// If true add-in referenced assemblies are loaded when command is invoked.
/// Otherwise command can't be invoked until addin is loaded
/// </summary>
public bool Lazy {
get {
return Codon.Properties["lazy"] == "1" || Codon.Properties["lazy"] == "true";
}
}
/// <summary>
/// Creates new instance of <see cref="CommandBindingInfoDescriptor" />
/// </summary>
/// <param name="codon">Reference to codon used to create this descriptor</param>
public CommandBindingInfoDescriptor(Codon codon)
{
Codon = codon;
Class = Codon.Properties["class"];
Command = Codon.Properties["command"];
CommandText = Codon.Properties["commandtext"];
OwnerInstanceName = Codon.Properties["ownerinstance"];
OwnerTypeName = Codon.Properties["ownertype"];
Gestures = Codon.Properties["gestures"];
Categories = Codon.Properties["categories"];
}
}
}

76
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/CommandBindingInfoDoozer.cs

@ -0,0 +1,76 @@ @@ -0,0 +1,76 @@
using System;
namespace ICSharpCode.Core
{
/// <attribute name="command" use="required">
/// Name of System.Window.Input.RoutedUICommand associated with built CommandBindingInfoDescriptor
/// The name should be first registered in code using ICSharpCode.Core.Presentation.CommandManager
/// or in addin file using RoutedUICommand node
/// </attribute>
/// <attribute name="class" use="required">
/// Full name of the command class (should implement ICSharpCode.Core.ICommand or System.Window.Input.ICommand) containing user instructions associated with
/// System.Windows.Input.CommandBinding
/// </attribute>
/// <attribute name="ownertype" use="optional">
/// Name of binding owner type.
///
/// A name can be assigned to type in code using ICSharpCode.Core.Presentation.CommandManager.
/// If this attribute is used "ownerinstance" attribute cannot be used
/// If neither owner type nor owner instance is specified default owner type is applied
/// </attribute>
/// <attribute name="ownertype" use="optional">
/// Name of binding owner instance.
///
/// A name can be assigned to instance in code using ICSharpCode.Core.Presentation.CommandManager.
/// If this attribute is used "ownertype" attribute cannot be used
/// If neither owner type nor owner instance is specified default owner type is applied
/// </attribute>
/// <attribute name="lazy" use="optional" enum="1;0;true;false">
/// Use lazy loading.
/// </attribute>
/// <attribute name="gestures" use="optional">
/// Create input bindings assigned to the same owner type or owner instance and associated
/// with the same System.Window.Input.RoutedUICommand
/// </attribute>
/// <attribute name="commandtext" use="optional">
/// Text displayed to user when managing input bindings (shortcuts)
///
/// If this attribute is not used System.Window.Input.RoutedUICommand.Text property is used
/// This attribute can only be used together with "gestures" attribute
/// </attribute>
/// <attribute name="categories" use="optional">
/// List of paths to input binding categories associated with created input binding info (separated by comma)
///
/// Input binding categories can be created in code using ICSharpCode.Core.Presentation.CommandManager or by using InputBindingCategory node in addin file
/// Input binding categories are used to group shortcuts into separate sections when displaying to user.
/// This attribute can only be used together with "gestures" attribute
/// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/CommandBindings</usage>
/// <returns>
/// CommandBindingInfoDescriptor object
/// </returns>
/// <summary>
/// Registers ICSharpCode.Core.Presentation.CommandBindingInfo with specified pa
/// </summary>
public class CommandBindingInfoDoozer : IDoozer
{
/// <inheritdoc />
public bool HandleConditions {
get {
return false;
}
}
/// <summary>
/// Builds instance of <see cref="CommandBindingInfoDescriptor" /> from codon
/// </summary>
/// <param name="caller">Caller object</param>
/// <param name="codon">Codon</param>
/// <param name="subItems">Codon sub-items</param>
/// <returns>Instance of <see cref="CommandBindingInfoDescriptor" /></returns>
public object BuildItem(object caller, Codon codon, System.Collections.ArrayList subItems)
{
return new CommandBindingInfoDescriptor(codon);
}
}
}

45
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingCategoryDescriptor.cs

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
using System;
using System.Linq;
using System.Collections.Generic;
namespace ICSharpCode.Core
{
/// <summary>
/// Describes <see cref="ICSharpCode.Core.Presentation.CommandBindingInfo" />
/// </summary>
public class InputBindingCategoryDescriptor
{
/// <summary>
/// Gets category Id used to create category path
/// </summary>
public string Id {
get; private set;
}
/// <summary>
/// Gets category name displayed to user
/// </summary>
public string Text {
get; private set;
}
/// <summary>
/// Gets children category descriptors
/// </summary>
public List<InputBindingCategoryDescriptor> Children {
get; private set;
}
/// <summary>
/// Creates instance of <see cref="InputBindingCategoryDescriptor" />
/// </summary>
/// <param name="codon">Reference to codon used to create this descriptor</param>
/// <param name="subItems">List of sub-category descriptors</param>
public InputBindingCategoryDescriptor(Codon codon, System.Collections.ArrayList subItems)
{
Id = codon.Properties["id"];
Text = codon.Properties["text"];
Children = subItems != null ? subItems.Cast<InputBindingCategoryDescriptor>().ToList() : new List<InputBindingCategoryDescriptor>();
}
}
}

43
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingCategoryDoozer.cs

@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace ICSharpCode.Core
{
/// <attribute name="id" use="required">
/// Category Id used in category path
/// </attribute>
/// <attribute name="name" use="required">
/// Category name displayed to user
/// </attribute>
/// <usage>Only in /SharpDevelop/CommandManager/InputBindingCategories</usage>
/// <returns>
/// InputBindingCategory object
/// </returns>
/// <summary>
/// Associates ICSharpCode.Core.Presentation.InputBindingCategory with path which can later be used to reference created ICSharpCode.Core.Presentation.InputBindingCategory
/// </summary>
public class InputBindingCategoryDoozer : IDoozer
{
/// <inheritdoc />
public bool HandleConditions {
get {
return true;
}
}
/// <summary>
/// Builds instance of <see cref="InputBindingCategoryDescriptor" /> from codon
/// </summary>
/// <param name="caller">Caller object</param>
/// <param name="codon">Codon</param>
/// <param name="subItems">Codon sub-items</param>
/// <returns>Instance of <see cref="InputBindingCategoryDescriptor" /></returns>
public object BuildItem(object caller, Codon codon, System.Collections.ArrayList subItems)
{
return new InputBindingCategoryDescriptor(codon, subItems);
}
}
}

90
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingInfoDescriptor.cs

@ -0,0 +1,90 @@ @@ -0,0 +1,90 @@
using System;
namespace ICSharpCode.Core
{
/// <summary>
/// Describes <see cref="ICSharpCode.Core.Presentation.InputBindingInfo" />
/// </summary>
public class InputBindingInfoDescriptor
{
/// <summary>
/// Codon used to create this descriptor
/// </summary>
public Codon Codon
{
get; private set;
}
/// <summary>
/// Gets name of <see cref="System.Window.Input.RoutedUICommand" /> associated with descriptor
/// The name should be associated to a command in code using <see cref="ICSharpCode.Core.Presentation.CommandManager" />
/// </summary>
public string Command
{
get; private set;
}
/// <summary>
/// Gets overriden routed command text (string visible to user)
///
/// If not provided <see cref="System.Window.Input.RoutedUICommand.Text" /> property value is used
/// </summary>
public string CommandText
{
get; private set;
}
/// <summary>
/// Gets name of binding owner type name.
///
/// A name can be assigned to type in code using <see cref="ICSharpCode.Core.Presentation.CommandManager" />.
/// If this property is set then <see cref="OwnerTypeName" /> property can be ignored
/// If neither owner type nor owner instance is specified default owner type is applied
/// </summary>
public string OwnerInstanceName {
get; private set;
}
/// <summary>
/// Name of binding owner instance name.
///
/// A name can be assigned to instance in code using <see cref="ICSharpCode.Core.Presentation.CommandManager" />.
/// If this property is set then <see cref="OwnerInstanceName" /> property can be ignored
/// If neither owner type nor owner instance is specified default owner type is applied
/// </summary>
public string OwnerTypeName {
get; private set;
}
/// <summary>
/// Gets gestures associated with created <see cref="ICSharpCode.Core.Presentation.InputBindingInfo" />
/// </summary>
public string Gestures {
get; private set;
}
/// <summary>
/// List of paths to input binding categories associated with created <see cref="ICSharpCode.Core.Presentation.InputBindingInfo" /> (separated by comma)
/// </summary>
public string Categories {
get; private set;
}
/// <summary>
/// Creates new instance of <see cref="InputBindingInfoDescriptor" />
/// </summary>
/// <param name="codon">Reference to codon used to create this descriptor</param>
public InputBindingInfoDescriptor(Codon codon)
{
Codon = codon;
Command = codon.Properties["command"];
CommandText = codon.Properties["commandtext"];
OwnerInstanceName = codon.Properties["ownerinstance"];
OwnerTypeName = codon.Properties["ownertype"];
Gestures = codon.Properties["gestures"];
Categories = codon.Properties["categories"];
}
}
}

69
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/InputBindingInfoDoozer.cs

@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
using System;
namespace ICSharpCode.Core
{
/// <attribute name="command" use="required">
/// Name of System.Window.Input.RoutedUICommand associated with built InputBindingInfoDescriptor
/// The name should be first registered in code using ICSharpCode.Core.Presentation.CommandManager
/// or in addin file using RoutedUICommand node
/// </attribute>
/// <attribute name="ownertype" use="optional">
/// Name of binding owner type.
///
/// A name can be assigned to type in code using ICSharpCode.Core.Presentation.CommandManager.
/// If this attribute is used "ownerinstance" attribute cannot be used
/// If neither owner type nor owner instance is specified default owner type is applied
/// </attribute>
/// <attribute name="ownertype" use="optional">
/// Name of binding owner instance.
///
/// A name can be assigned to instance in code using ICSharpCode.Core.Presentation.CommandManager.
/// If this attribute is used "ownertype" attribute cannot be used
/// If neither owner type nor owner instance is specified default owner type is applied
/// </attribute>
/// <attribute name="gestures" use="optional">
/// Gestures associated with created System.Windows.Input.InputBinding instances
/// </attribute>
/// <attribute name="commandtext" use="optional">
/// Text displayed to user when managing input bindings (shortcuts)
///
/// If this attribute is not used System.Window.Input.RoutedUICommand.Text property is used
/// This attribute can only be used together with "gestures" attribute
/// </attribute>
/// <attribute name="categories" use="optional">
/// List of input binding category paths (separated using comma) associated with
/// created input binding infos
///
/// Input binding categories can be created in code using ICSharpCode.Core.Presentation.CommandManager or by using InputBindingCategory node in addin file
/// Input binding categories are used to group shortcuts into separate sections when displaying to user.
/// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/InputBindings</usage>
/// <returns>
/// CommandBindingInfoDescriptor object
/// </returns>
/// <summary>
/// Registers ICSharpCode.Core.Presentation.InputBindingInfo with specified parameters
/// </summary>
public class InputBindingInfoDoozer : IDoozer
{
/// <inheritdoc />
public bool HandleConditions
{
get {
return true;
}
}
/// <summary>
/// Builds instance of <see cref="InputBindingInfoDescriptor" /> from codon
/// </summary>
/// <param name="caller">Caller object</param>
/// <param name="codon">Codon</param>
/// <param name="subItems">Codon sub-items</param>
/// <returns>Instance of <see cref="InputBindingInfoDescriptor" /></returns>
public object BuildItem(object caller, Codon codon, System.Collections.ArrayList subItems)
{
return new InputBindingInfoDescriptor(codon);
}
}
}

41
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/RoutedUICommandDescriptor.cs

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
using System;
namespace ICSharpCode.Core
{
/// <summary>
/// Describes <see cref="System.Windows.Input.RoutedUICommand" />
/// </summary>
public class RoutedUICommandDescriptor
{
private Codon codon;
/// <summary>
/// Gets text with routed command purpose description
/// </summary>
public string Text
{
get {
return codon.Properties["text"];
}
}
/// <summary>
/// Get routed command name
/// </summary>
public string Name
{
get {
return codon.Properties["name"];
}
}
/// <summary>
/// Creates instance of <see cref="RoutedUICommandDescriptor" />
/// </summary>
/// <param name="codon">Reference to codon used to create this descriptor</param>
public RoutedUICommandDescriptor(Codon codon)
{
this.codon = codon;
}
}
}

39
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Command/RoutedUICommandDoozer.cs

@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
using System;
namespace ICSharpCode.Core
{
/// <attribute name="name" use="required">
/// System.Window.Input.RoutedUICommand unique name
/// </attribute>
/// <attribute name="text" use="required">
/// Displayed text associated with created System.Window.Input.RoutedUICommand
/// </attribute>
/// <usage>Only in /SharpDevelop/CommandManager/RoutedUICommands</usage>
/// <returns>
/// RoutedUICommandDescriptor object
/// </returns>
/// <summary>
/// Creates new System.Window.Input.RoutedUICommand and associates it with a unique name which can be used later to reference routed command
/// </summary>
public class RoutedUICommandDoozer : IDoozer
{
/// <inheritdoc />
public bool HandleConditions {
get {
return false;
}
}
/// <summary>
/// Builds instance of <see cref="RoutedUICommandDescriptor" /> from codon
/// </summary>
/// <param name="caller">Caller object</param>
/// <param name="codon">Codon</param>
/// <param name="subItems">Codon sub-items</param>
/// <returns>Instance of <see cref="RoutedUICommandDescriptor" /></returns>
public object BuildItem(object caller, Codon codon, System.Collections.ArrayList subItems)
{
return new RoutedUICommandDescriptor(codon);
}
}
}

2
src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs

@ -43,7 +43,7 @@ namespace ICSharpCode.Core @@ -43,7 +43,7 @@ namespace ICSharpCode.Core
/// clicking the item.
/// </attribute>
/// <attribute name="shortcut" use="optional">
/// Shortcut that activates the command (e.g. "Control|S").
/// Shortcut that activates the command (e.g. "Ctrl+S").
/// </attribute>
/// <children childTypes="MenuItem">
/// If "type" is "Menu", the item can have sub-menuitems.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save