Browse Source

Added WPF BreakPointsPad, Watchpad, LocalVarPad + controls

pull/4/head
eusebiu 15 years ago
parent
commit
b53f8635f2
  1. 408
      SharpDevelop.sln
  2. 12
      data/resources/StringResources.resx
  3. 4
      data/resources/image/BitmapResources/BitmapResources.res
  4. BIN
      data/resources/image/BitmapResources/Bookmarks/DeleteAllBreakpoints.PNG
  5. BIN
      data/resources/image/BitmapResources/Bookmarks/DisableAllBreakpoints.PNG
  6. BIN
      data/resources/image/BitmapResources/Bookmarks/NextBreakpoint.png
  7. BIN
      data/resources/image/BitmapResources/Bookmarks/PrevBreakpoint.png
  8. 36
      src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin
  9. 11
      src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj
  10. 26
      src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs
  11. 22
      src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml
  12. 190
      src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml.cs
  13. 56
      src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/Converters.cs
  14. 74
      src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/TreeListView.cs
  15. 330
      src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml
  16. 56
      src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml.cs
  17. 81
      src/AddIns/Debugger/Debugger.AddIn/Pads/LocalVarPad.cs
  18. 2
      src/AddIns/Debugger/Debugger.AddIn/Pads/WatchInputBox.xaml
  19. 52
      src/AddIns/Debugger/Debugger.AddIn/Pads/WatchInputBox.xaml.cs
  20. 149
      src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPad.cs
  21. 55
      src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadCommands.cs
  22. 26
      src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadModel.cs
  23. 74
      src/AddIns/Debugger/Debugger.AddIn/TreeModel/ExpressionNode.cs
  24. 13
      src/AddIns/Debugger/Debugger.AddIn/TreeModel/TreeNode.cs
  25. 7
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs
  26. 4
      src/Main/Base/Project/ICSharpCode.SharpDevelop.addin
  27. 3
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  28. 8
      src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs
  29. 16
      src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs
  30. 129
      src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs
  31. 44
      src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs
  32. 43
      src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml
  33. 240
      src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs
  34. 71
      src/Main/Base/Project/Src/Commands/DebugCommands.cs
  35. 31
      src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs
  36. 12
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs
  37. BIN
      src/Main/StartUp/Project/Resources/BitmapResources.resources

408
SharpDevelop.sln

@ -1,29 +1,27 @@ @@ -1,29 +1,27 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.0.0.6474
# SharpDevelop 4.0.0.6860
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.BuildWorker35", "src\Main\ICSharpCode.SharpDevelop.BuildWorker35\ICSharpCode.SharpDevelop.BuildWorker35.csproj", "{B5F54272-49F0-40DB-845A-8D837875D3BA}"
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.BuildWorker", "src\Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
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", "src\Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core.Presentation", "src\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj", "{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "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.WinForms", "src\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
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
@ -33,22 +31,24 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Do @@ -33,22 +31,24 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.Do
{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.WinForms", "src\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj", "{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "src\Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
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.Widgets", "src\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj", "{8035765F-D51F-4A0C-A746-2FD100E19419}"
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.SharpDevelop.BuildWorker", "src\Main\ICSharpCode.SharpDevelop.BuildWorker\ICSharpCode.SharpDevelop.BuildWorker.csproj", "{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "src\Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop.BuildWorker35", "src\Main\ICSharpCode.SharpDevelop.BuildWorker35\ICSharpCode.SharpDevelop.BuildWorker35.csproj", "{B5F54272-49F0-40DB-845A-8D837875D3BA}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
@ -57,217 +57,211 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{ @@ -57,217 +57,211 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonDock", "src\Libraries\AvalonDock\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("{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}") = "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}") = "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.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\AvalonDock.csproj", "{2FF700C2-A38A-48BD-A637-8CAFD4FE6237}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{39327899-ED91-4F7F-988C-4FE4E17C014D}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Reports", "Reports", "{8789D7FF-B36C-4187-B57D-55ED64623272}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Version Control", "Version Control", "{6E3D4DBA-DBF9-4035-8F7E-1403975B21EA}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Reports.Addin", "src\AddIns\Misc\Reports\ICSharpCode.Reports.Addin\ICSharpCode.Reports.Addin.csproj", "{35D002D7-C78B-44FB-92AA-104BEB431678}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\VersionControl\SubversionAddIn\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}") = "ICSharpCode.Reports.Core", "src\AddIns\Misc\Reports\ICSharpCode.Reports.Core\ICSharpCode.Reports.Core.csproj", "{4B2239FF-8FD6-431D-9D22-1B8049BA6917}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitAddIn", "src\AddIns\VersionControl\GitAddIn\GitAddIn.csproj", "{83F15BA7-8478-4664-81BB-A82F146D88B3}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Irony", "src\AddIns\Misc\Reports\Irony\Irony.csproj", "{D81F5C91-D7DB-46E5-BC99-49488FB6814C}"
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\Analysis\Profiler\Frontend\AddIn\Profiler.AddIn.csproj", "{D294A12D-4B38-4F25-9AA6-3D4A6CE26E7B}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeQualityAnalysis", "src\AddIns\Analysis\CodeQuality\CodeQualityAnalysis.csproj", "{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6} = {FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "src\AddIns\Analysis\Profiler\Frontend\Controls\Profiler.Controls.csproj", "{BDA49550-5ED1-4C6B-B648-657B2CACD8E0}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceAnalysis", "src\AddIns\Analysis\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\Analysis\Profiler\Controller\Profiler.Controller.csproj", "{72FFB35A-C9E2-4A31-B4FA-E3E3E28DED5F}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeCoverage", "src\AddIns\Analysis\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\Analysis\Profiler\X64Converter\Profiler.X64Converter.csproj", "{FE88FE17-D9FB-4FCC-9A35-6BFFB6B26CC6}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Analysis\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Analysis\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Ruby", "Ruby", "{C7288E72-FFBE-48CD-84B4-6CBF95A7195A}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{6022AC51-B658-4C54-97EF-79187AC65B47}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RubyBinding", "src\AddIns\BackendBindings\Ruby\RubyBinding\Project\RubyBinding.csproj", "{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}"
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}") = "CppBinding", "src\AddIns\BackendBindings\CppBinding\CppBinding\CppBinding.csproj", "{70966F84-74C9-4067-A379-0C674A929233}"
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}") = "Boo", "Boo", "{97B3B514-AB0E-4FE1-89DE-8A945F5112AE}"
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.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}") = "NRefactoryToBooConverter", "src\AddIns\BackendBindings\Boo\NRefactoryToBooConverter\Project\NRefactoryToBooConverter.csproj", "{DBCF20A1-BA13-4582-BFA9-74DE4D987B73}"
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}") = "Python", "Python", "{CA76F702-5B4E-4918-B8D8-7FF8382434FF}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IconEditor", "IconEditor", "{0773ED53-08E2-4495-A3BE-CA0B5D413C15}"
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}") = "IconEditorAddIn", "src\AddIns\DisplayBindings\IconEditor\IconEditorAddIn\IconEditorAddIn.csproj", "{DFB936AD-90EE-4B4F-941E-4F4A636F0D92}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PythonBinding", "src\AddIns\BackendBindings\Python\PythonBinding\Project\PythonBinding.csproj", "{8D732610-8FC6-43BA-94C9-7126FD7FE361}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.csproj", "{BF38FB72-B380-4196-AF8C-95749D726C61}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XamlBinding", "src\AddIns\BackendBindings\XamlBinding\XamlBinding\XamlBinding.csproj", "{7C96B65D-28A5-4F28-A35B-8D83CE831EE8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}") = "FSharpBinding", "src\AddIns\BackendBindings\FSharpBinding\FSharpBinding.csproj", "{E954F3CB-A446-492F-A664-2B376EBC86E8}"
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}") = "ICSharpCode.Scripting", "src\AddIns\BackendBindings\Scripting\Project\ICSharpCode.Scripting.csproj", "{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}"
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}") = "HelpViewer", "src\AddIns\Misc\HelpViewer\HelpViewer.csproj", "{80F76D10-0B44-4D55-B4BD-DAEB5464090C}"
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}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\Project\SharpRefactoring.csproj", "{3CA90546-3B4C-4663-9445-C4E9371750A7}"
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}") = "SearchAndReplace", "src\AddIns\Misc\SearchAndReplace\Project\SearchAndReplace.csproj", "{9196DD8A-B4D4-4780-8742-C5762E547FC2}"
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}") = "ReflectorAddIn", "src\AddIns\Misc\ReflectorAddIn\ReflectorAddIn\Project\ReflectorAddIn.csproj", "{8AA421C8-D7AF-4957-9F43-5135328ACB24}"
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}") = "StartPage", "src\AddIns\Misc\StartPage\Project\StartPage.csproj", "{7D5C266F-D6FF-4D14-B315-0C0FC6C4EF51}"
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}") = "AddInManager", "src\AddIns\Misc\AddInManager\Project\AddInManager.csproj", "{F93E52FD-DA66-4CE5-A0CB-BCD902811122}"
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}") = "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}
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
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}
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
@ -277,179 +271,185 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "src\AddI @@ -277,179 +271,185 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceToolkit", "src\AddI
{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
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}") = "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.AddIn", "src\AddIns\Misc\UsageDataCollector\UsageDataCollector.AddIn\UsageDataCollector.AddIn.csproj", "{0008FCE9-9EB4-4E2E-979B-553278E5BBA6}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Display Bindings", "Display Bindings", "{11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}"
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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{C7F29FC2-1B03-4CDD-9E30-400F4765FF04}"
ProjectSection(SolutionItems) = postProject
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.SQLServer", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.SQLServer\ICSharpCode.Data.SQLServer.csproj", "{AFE34868-AFA1-4E1C-9450-47AB4BE329D5}"
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.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}") = "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.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}") = "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.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}") = "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.Core", "src\AddIns\DisplayBindings\Data\ICSharpCode.Data.Core\ICSharpCode.Data.Core.csproj", "{B7823AE9-4B43-4859-8796-2EBDC116FBB8}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpRefactoring", "src\AddIns\Misc\SharpRefactoring\Project\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}") = "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}") = "HelpViewer", "src\AddIns\Misc\HelpViewer\HelpViewer.csproj", "{80F76D10-0B44-4D55-B4BD-DAEB5464090C}"
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}") = "ICSharpCode.Scripting", "src\AddIns\BackendBindings\Scripting\Project\ICSharpCode.Scripting.csproj", "{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}"
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}") = "FSharpBinding", "src\AddIns\BackendBindings\FSharpBinding\FSharpBinding.csproj", "{E954F3CB-A446-492F-A664-2B376EBC86E8}"
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", "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}") = "AvalonEdit.AddIn", "src\AddIns\DisplayBindings\AvalonEdit.AddIn\AvalonEdit.AddIn.csproj", "{0162E499-42D0-409B-AA25-EED21F75336B}"
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}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{CBC6C247-747B-4908-B09A-4D2E0F640B6B}"
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("{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("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "WpfDesign", "WpfDesign", "{6022AC51-B658-4C54-97EF-79187AC65B47}"
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", "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}") = "WpfDesign.AddIn", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.AddIn\WpfDesign.AddIn.csproj", "{9A9D6FD4-6A2E-455D-ACC3-DDA775FE9865}"
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.Designer", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.Designer\Project\WpfDesign.Designer.csproj", "{78CC29AC-CC79-4355-B1F2-97936DF198AC}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BooBinding", "src\AddIns\BackendBindings\Boo\BooBinding\Project\BooBinding.csproj", "{4AC2D5F1-F671-480C-A075-6BF62B3721B2}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.XamlDom", "src\AddIns\DisplayBindings\WpfDesign\WpfDesign.XamlDom\Project\WpfDesign.XamlDom.csproj", "{88DA149F-21B2-48AB-82C4-28FB6BDFD783}"
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}") = "Ruby", "Ruby", "{C7288E72-FFBE-48CD-84B4-6CBF95A7195A}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Analysis\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RubyBinding", "src\AddIns\BackendBindings\Ruby\RubyBinding\Project\RubyBinding.csproj", "{C896FFFF-5B6C-4B0E-B6DF-049865F501B4}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysis", "src\AddIns\Analysis\CodeAnalysis\CodeAnalysis.csproj", "{3EAA45A9-735C-4AC7-A799-947B93EA449D}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Profiler", "Profiler", "{C4035C32-026F-4158-AF15-113EA1EF1960}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.X64Converter", "src\AddIns\Analysis\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\Analysis\CodeCoverage\Project\CodeCoverage.csproj", "{08CE9972-283B-44F4-82FA-966F7DFA6B7A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controller", "src\AddIns\Analysis\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\Analysis\SourceAnalysis\SourceAnalysis.csproj", "{CE498514-D12D-4B6E-AE0E-FEC29BD43748}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.Controls", "src\AddIns\Analysis\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}") = "CodeQualityAnalysis", "src\AddIns\Analysis\CodeQuality\CodeQualityAnalysis.csproj", "{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Profiler.AddIn", "src\AddIns\Analysis\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}
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Version Control", "Version Control", "{6E3D4DBA-DBF9-4035-8F7E-1403975B21EA}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Reports", "Reports", "{8789D7FF-B36C-4187-B57D-55ED64623272}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitAddIn", "src\AddIns\VersionControl\GitAddIn\GitAddIn.csproj", "{83F15BA7-8478-4664-81BB-A82F146D88B3}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Irony", "src\AddIns\Misc\Reports\Irony\Irony.csproj", "{D81F5C91-D7DB-46E5-BC99-49488FB6814C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Reports.Core", "src\AddIns\Misc\Reports\ICSharpCode.Reports.Core\ICSharpCode.Reports.Core.csproj", "{4B2239FF-8FD6-431D-9D22-1B8049BA6917}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SubversionAddIn", "src\AddIns\VersionControl\SubversionAddIn\SubversionAddIn.csproj", "{17F4D7E0-6933-4C2E-8714-FD7E98D625D5}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Reports.Addin", "src\AddIns\Misc\Reports\ICSharpCode.Reports.Addin\ICSharpCode.Reports.Addin.csproj", "{35D002D7-C78B-44FB-92AA-104BEB431678}"
ProjectSection(ProjectDependencies) = postProject
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}
EndProjectSection
@ -917,98 +917,98 @@ Global @@ -917,98 +917,98 @@ Global
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}
{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{B5F54272-49F0-40DB-845A-8D837875D3BA} = {256F5C28-532C-44C0-8AB8-D8EC5E492E01}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{DDE2A481-8271-4EAC-A330-8FA6A38D13D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{E73BB233-D88B-44A7-A98F-D71EE158381D} = {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}
{C3CBC8E3-81D8-4C5B-9941-DCCD12D50B1F} = {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}
{2FF700C2-A38A-48BD-A637-8CAFD4FE6237} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{6E3D4DBA-DBF9-4035-8F7E-1403975B21EA} = {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}
{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}
{C4035C32-026F-4158-AF15-113EA1EF1960} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{4139CCF6-FB49-4A9D-B2CF-331E9EA3198D} = {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}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {2A232EF1-EB95-41C6-B63A-C106E0C95D3C}
{8789D7FF-B36C-4187-B57D-55ED64623272} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{D81F5C91-D7DB-46E5-BC99-49488FB6814C} = {8789D7FF-B36C-4187-B57D-55ED64623272}
{4B2239FF-8FD6-431D-9D22-1B8049BA6917} = {8789D7FF-B36C-4187-B57D-55ED64623272}
{35D002D7-C78B-44FB-92AA-104BEB431678} = {8789D7FF-B36C-4187-B57D-55ED64623272}
{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}
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD} = {E0646C25-36F2-4524-969F-FA621353AB94}
{E954F3CB-A446-492F-A664-2B376EBC86E8} = {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}
{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}
{C7288E72-FFBE-48CD-84B4-6CBF95A7195A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4} = {C7288E72-FFBE-48CD-84B4-6CBF95A7195A}
{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}
{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}
{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}
{3CA90546-3B4C-4663-9445-C4E9371750A7} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{80F76D10-0B44-4D55-B4BD-DAEB5464090C} = {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}
{0773ED53-08E2-4495-A3BE-CA0B5D413C15} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E618A9CD-A39F-4925-A538-E8A3FEF24E54} = {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}
{C4035C32-026F-4158-AF15-113EA1EF1960} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{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}
{F355E45F-F54F-4B42-8916-9A633A392789} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{6E3D4DBA-DBF9-4035-8F7E-1403975B21EA} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{83F15BA7-8478-4664-81BB-A82F146D88B3} = {6E3D4DBA-DBF9-4035-8F7E-1403975B21EA}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {6E3D4DBA-DBF9-4035-8F7E-1403975B21EA}
{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}
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3} = {F355E45F-F54F-4B42-8916-9A633A392789}
{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}
{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}
{76DD1CC0-0D86-44A1-9BD6-D91F79807BC3} = {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}
{17F4D7E0-6933-4C2E-8714-FD7E98D625D5} = {6E3D4DBA-DBF9-4035-8F7E-1403975B21EA}
{83F15BA7-8478-4664-81BB-A82F146D88B3} = {6E3D4DBA-DBF9-4035-8F7E-1403975B21EA}
{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}
{80F76D10-0B44-4D55-B4BD-DAEB5464090C} = {F3662720-9EA2-4591-BBC6-97361DCE50A9}
{3CA90546-3B4C-4663-9445-C4E9371750A7} = {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}
{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}
{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}
{C7288E72-FFBE-48CD-84B4-6CBF95A7195A} = {E0646C25-36F2-4524-969F-FA621353AB94}
{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}
{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}
{E954F3CB-A446-492F-A664-2B376EBC86E8} = {E0646C25-36F2-4524-969F-FA621353AB94}
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD} = {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}
{C896FFFF-5B6C-4B0E-B6DF-049865F501B4} = {C7288E72-FFBE-48CD-84B4-6CBF95A7195A}
{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}
{35D002D7-C78B-44FB-92AA-104BEB431678} = {8789D7FF-B36C-4187-B57D-55ED64623272}
{4B2239FF-8FD6-431D-9D22-1B8049BA6917} = {8789D7FF-B36C-4187-B57D-55ED64623272}
{D81F5C91-D7DB-46E5-BC99-49488FB6814C} = {8789D7FF-B36C-4187-B57D-55ED64623272}
EndGlobalSection
EndGlobal

12
data/resources/StringResources.resx

@ -5645,6 +5645,15 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment> @@ -5645,6 +5645,15 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment>
<data name="MainWindow.Windows.BookmarksLabel" xml:space="preserve">
<value>Bookmarks</value>
</data>
<data name="MainWindow.Windows.BookmarkPad.LineText" xml:space="preserve">
<value>{0} @line {1}</value>
</data>
<data name="MainWindow.Windows.BookmarkPad.LocationText" xml:space="preserve">
<value>Location</value>
</data>
<data name="MainWindow.Windows.BookmarkPad.LanguageHeader" xml:space="preserve">
<value>Language</value>
</data>
<data name="MainWindow.Windows.ClassBrowser.BackButton.ToolTip" xml:space="preserve">
<value>Back</value>
</data>
@ -5775,6 +5784,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment> @@ -5775,6 +5784,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs</comment>
<data name="MainWindow.Windows.Debug.Conditional.Breakpoints.Trace" xml:space="preserve">
<value>Trace</value>
</data>
<data name="MainWindow.Windows.Debug.Conditional.Breakpoints.ConditionalColumnHeader" xml:space="preserve">
<value>Condition</value>
</data>
<data name="MainWindow.Windows.Debug.Console" xml:space="preserve">
<value>Console</value>
</data>

4
data/resources/image/BitmapResources/BitmapResources.res

@ -342,6 +342,10 @@ Bookmarks.DisabledBreakpoint = Bookmarks\DisabledBreakpoint @@ -342,6 +342,10 @@ Bookmarks.DisabledBreakpoint = Bookmarks\DisabledBreakpoint
Bookmarks.UnhealthyBreakpoint = Bookmarks\UnhealthyBreakpoint.png
Bookmarks.UnhealthyBreakpointConditional = Bookmarks\UnhealthyBreakpointConditional.png
Bookmarks.CurrentLine = Bookmarks\CurrentLine.png
Bookmarks.DeleteAllBreakpoints = Bookmarks\DeleteAllBreakpoints.png
Bookmarks.DisableAllBreakpoints = Bookmarks\DisableAllBreakpoints.png
Bookmarks.NextBreakpoint = Bookmarks\NextBreakpoint.png
Bookmarks.PrevBreakpoint = Bookmarks\PrevBreakpoint.png
#backend icons
C#.ProjectIcon = backendicons\CSharp\SmallProject.png

BIN
data/resources/image/BitmapResources/Bookmarks/DeleteAllBreakpoints.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

BIN
data/resources/image/BitmapResources/Bookmarks/DisableAllBreakpoints.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

BIN
data/resources/image/BitmapResources/Bookmarks/NextBreakpoint.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

BIN
data/resources/image/BitmapResources/Bookmarks/PrevBreakpoint.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

36
src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin

@ -68,12 +68,12 @@ @@ -68,12 +68,12 @@
</Path>
<Path name = "/SharpDevelop/Workbench/Pads">
<!--<Pad id = "BreakPointsPad"
<Pad id = "BreakPointsPad"
category = "Debugger"
title = "${res:MainWindow.Windows.Debug.Breakpoints}"
icon = "PadIcons.BreakPoints"
class = "ICSharpCode.SharpDevelop.Gui.Pads.BreakPointsPad"
defaultPosition = "Bottom, Hidden" />-->
defaultPosition = "Bottom, Hidden" />
<Pad id = "CallStackPad"
category = "Debugger"
@ -129,15 +129,15 @@ @@ -129,15 +129,15 @@
<MenuItem id="AddWatch" label="${res:MainWindow.Windows.Debug.Watch.AddWatch}" class="Debugger.AddIn.AddWatchCommand" />
<MenuItem id="RemoveWatch" label="${res:MainWindow.Windows.Debug.Watch.RemoveWatch}" class="Debugger.AddIn.RemoveWatchCommand" />
<MenuItem id="ClearWatches" label="${res:MainWindow.Windows.Debug.Watch.RemoveAll}" class="Debugger.AddIn.ClearWatchesCommand" />
<MenuItem id="SelectLanguage" label="Select language" type="Menu">
<MenuItem id="Builder" class="Debugger.AddIn.WatchScriptingLanguageMenuBuilder" type="Builder" />
</MenuItem>
<Condition name = "IsProcessRunning" isdebugging="True">
<Condition name = "IsProcessRunning" isdebugging="True" isprocessrunning="False">
<MenuItem id="Separator1" type="Separator" />
<MenuItem id="RefreshWatches" label="${res:MainWindow.Windows.Debug.Watch.Refresh}" class="Debugger.AddIn.RefreshWatchesCommand" />
</Condition>
</Condition>
<MenuItem id="Separator2" type="Separator" />
<MenuItem id="CopyToClipboard" label="${res:MainWindow.Windows.Debug.LocalVariables.CopyToClipboard}" class="Debugger.AddIn.CopyToClipboardCommand"/>
</Path>
<Path name = "/SharpDevelop/Dialogs/OptionsDialog">
@ -165,4 +165,30 @@ @@ -165,4 +165,30 @@
<Class class="Debugger.AddIn.Visualizers.ObjectGraphVisualizerDescriptor" />
<Class class="Debugger.AddIn.Visualizers.GridVisualizerDescriptor" />
</Path>
<Path name="/SharpDevelop/Pads/BreakpointPad/Toolbar">
<ToolbarItem id = "GotoPrev"
icon = "Bookmarks.PrevBreakpoint"
tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoPrev.ToolTip}"
class = "ICSharpCode.SharpDevelop.Project.Commands.PrevBreakpointCommand"/>
<ToolbarItem id = "GotoNext"
icon = "Bookmarks.NextBreakpoint"
tooltip = "${res:MainWindow.Windows.BookmarkPad.GotoNext.ToolTip}"
class = "ICSharpCode.SharpDevelop.Project.Commands.NextBreakpointCommand"/>
<ToolbarItem id = "GotoInFolderSeparator" type = "Separator" />
<ToolbarItem id = "DisableAllBreakpoints"
icon = "Bookmarks.DisableAllBreakpoints"
tooltip = "${res:MainWindow.Windows.BookmarkPad.EnableDisableAll.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.EnableDisableAll"/>
<ToolbarItem id = "EnableDisableSeparator" type = "Separator" />
<ToolbarItem id = "DeleteMark"
icon = "Icons.16x16.DeleteIcon"
tooltip = "${res:MainWindow.Windows.BookmarkPad.DeleteMark.ToolTip}"
class = "ICSharpCode.SharpDevelop.Bookmarks.DeleteMark"/>
<ToolbarItem id = "EnableDisableSeparator" type = "Separator" />
<ToolbarItem id = "DeleteAllBreakpoints"
icon = "Bookmarks.DeleteAllBreakpoints"
tooltip = "${res:MainWindow.Windows.BookmarkPad.DeleteAllMarks.ToolTip}"
class = "ICSharpCode.SharpDevelop.Project.Commands.RemoveAllBreakpointsCommand"/>
</Path>
</AddIn>

11
src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj

@ -91,6 +91,14 @@ @@ -91,6 +91,14 @@
<DependentUpon>CallStackPad.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Pads\Controls\ConditionCell.xaml.cs">
<DependentUpon>ConditionCell.xaml</DependentUpon>
</Compile>
<Compile Include="Pads\Controls\Converters.cs" />
<Compile Include="Pads\Controls\TreeListView.cs" />
<Compile Include="Pads\Controls\WatchList.xaml.cs">
<DependentUpon>WatchList.xaml</DependentUpon>
</Compile>
<Compile Include="Pads\WatchInputBox.xaml.cs">
<DependentUpon>WatchInputBox.xaml</DependentUpon>
<SubType>Code</SubType>
@ -336,6 +344,8 @@ @@ -336,6 +344,8 @@
</ItemGroup>
<ItemGroup>
<Page Include="Pads\CallStackPad.xaml" />
<Page Include="Pads\Controls\ConditionCell.xaml" />
<Page Include="Pads\Controls\WatchList.xaml" />
<Page Include="Pads\WatchInputBox.xaml" />
<Page Include="Service\EditBreakpointScriptWindow.xaml" />
<Page Include="Visualizers\Graph\Drawing\NodeControlResources.xaml" />
@ -358,6 +368,7 @@ @@ -358,6 +368,7 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<Folder Include="Pads\Controls" />
<Folder Include="Visualizers\Graph" />
<Folder Include="Visualizers\Graph\Drawing" />
<Folder Include="Visualizers\Graph\Layout" />

26
src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs

@ -1,7 +1,12 @@ @@ -1,7 +1,12 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the BSD license (for details please see \src\AddIns\Debugger\Debugger.AddIn\license.txt)
using System.Windows;
using System.Windows.Controls;
using Debugger;
using Debugger.AddIn.Pads.Controls;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Services;
@ -16,6 +21,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -16,6 +21,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public BreakPointsPad()
{
InitializeComponents();
myPanel.Children.Add(CreateToolBar());
CreateColumns();
}
void InitializeComponents()
@ -36,6 +45,23 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -36,6 +45,23 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
debuggerCore = debugger.DebuggerCore;
}
protected override ToolBar CreateToolBar()
{
ToolBar toolbar = ToolBarService.CreateToolBar(this, "/SharpDevelop/Pads/BreakpointPad/Toolbar");
toolbar.SetValue(Grid.RowProperty, 0);
return toolbar;
}
protected override void CreateColumns()
{
string conditionHeader = StringParser.Parse("${res:MainWindow.Windows.Debug.Conditional.Breakpoints.ConditionalColumnHeader}");
// HACK
DataTemplate cellTemplate = new ConditionCell().FindResource("ConditionCellTemplate") as DataTemplate;
listView.AddColumn(conditionHeader, cellTemplate);
}
protected override bool ShowBookmarkInThisPad(SDBookmark mark)
{
return mark.IsVisibleInBookmarkPad && mark is BreakpointBookmark;

22
src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
<UserControl x:Class="Debugger.AddIn.Pads.Controls.ConditionCell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:SDGui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop"
xmlns:local="clr-namespace:Debugger.AddIn.Pads.Controls">
<UserControl.Resources>
<DataTemplate x:Key="ConditionCellTemplate">
<Grid HorizontalAlignment="Stretch">
<local:ConditionCell
CommandText="{Binding Path=Condition, UpdateSourceTrigger=LostFocus}"
Tag="{Binding Path=Tag, Mode=TwoWay}"/>
</Grid>
</DataTemplate>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="200"/>
</Grid.ColumnDefinitions>
<ContentPresenter
Name="ConsolePanel" />
</Grid>
</UserControl>

190
src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml.cs

@ -0,0 +1,190 @@ @@ -0,0 +1,190 @@

using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using ICSharpCode.AvalonEdit;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
namespace Debugger.AddIn.Pads.Controls
{
public partial class ConditionCell : UserControl
{
private string language;
protected ConsoleControl console;
public static readonly DependencyProperty CommandTextProperty =
DependencyProperty.Register("CommandText", typeof(string), typeof(ConditionCell),
new UIPropertyMetadata(null, new PropertyChangedCallback(OnCommandTextChanged)));
private NRefactoryResolver resolver;
public ConditionCell()
{
InitializeComponent();
console = new ConsoleControl();
console.TextAreaTextEntered += new TextCompositionEventHandler(consoleControl_TextAreaTextEntered);
console.TextAreaPreviewKeyDown += new KeyEventHandler(console_TextAreaPreviewKeyDown);
console.LostFocus += new RoutedEventHandler(console_LostFocus);
console.HideScrollBar();
ConsolePanel.Content = console;
// get language
if (ProjectService.CurrentProject == null)
language = "C#";
else
language = ProjectService.CurrentProject.Language;
resolver = new NRefactoryResolver(LanguageProperties.GetLanguage(language));
// FIXME set language
if (language == "VB" || language == "VBNet") {
console.SetHighlighting("VBNET");
}
else {
console.SetHighlighting("C#");
}
}
/// <summary>
/// Gets/sets the command text displayed at the command prompt.
/// </summary>
public string CommandText {
get { return console.CommandText.Trim(); }
set { console.CommandText = value; }
}
private BreakpointBookmark Breakpoint {
get {
var model = Model;
return model.Mark as BreakpointBookmark;
}
}
private ListViewPadItemModel Model {
get { return Tag as ListViewPadItemModel; }
}
private ITextEditor TextEditor {
get {
return console.TextEditor;
}
}
private void console_TextAreaPreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Return || e.Key == Key.Escape) {
if (e.Key == Key.Escape)
CommandText = string.Empty;
else {
if(!CheckSyntax())
return;
}
UpdateBreakpoint();
e.Handled = true;
}
}
private void console_LostFocus(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(CommandText) || !this.CheckSyntax())
return;
UpdateBreakpoint();
}
private void UpdateBreakpoint()
{
Breakpoint.Condition = CommandText;
Model.Condition = CommandText;
Breakpoint.ScriptLanguage = language;
Model.Language = language;
if (!string.IsNullOrEmpty(console.CommandText)) {
Breakpoint.Action = BreakpointAction.Condition;
Model.Image = PresentationResourceService.GetImage("Bookmarks.BreakpointConditional").Source;
}
else {
Breakpoint.Action = BreakpointAction.Break;
Model.Image = PresentationResourceService.GetImage("Bookmarks.Breakpoint").Source;
}
}
private bool CheckSyntax()
{
string command = CommandText;
// FIXME workaround the NRefactory issue that needs a ; at the end
if (language == "C#") {
if(!command.EndsWith(";"))
command += ";";
// FIXME only one string should be available; highlighting expects C#, supproted language, CSharp
language = "CSharp";
}
SupportedLanguage supportedLanguage = (SupportedLanguage)Enum.Parse(typeof(SupportedLanguage), language.ToString(), true);
using (var parser = ParserFactory.CreateParser(supportedLanguage, new StringReader(TextEditor.Document.Text))) {
parser.ParseExpression();
if (parser.Errors.Count > 0) {
MessageService.ShowError(parser.Errors.ErrorOutput);
return false;
}
}
return true;
}
private void consoleControl_TextAreaTextEntered(object sender, TextCompositionEventArgs e)
{
foreach (char ch in e.Text) {
if (ch == '.') {
ShowDotCompletion(console.CommandText);
}
}
}
private void ShowDotCompletion(string currentText)
{
var seg = Breakpoint;
var expressionFinder = ParserService.GetExpressionFinder(seg.FileName.ToString());
var info = ParserService.GetParseInformation(seg.FileName.ToString());
string text = ParserService.GetParseableFileContent(seg.FileName.ToString()).Text;
int currentOffset = TextEditor.Caret.Offset - console.CommandOffset - 1;
var expr = expressionFinder.FindExpression(currentText, currentOffset);
expr.Region = new DomRegion(seg.LineNumber, seg.ColumnNumber, seg.LineNumber, seg.ColumnNumber);
var rr = resolver.Resolve(expr, info, text);
if (rr != null) {
TextEditor.ShowCompletionWindow(new DotCodeCompletionItemProvider().GenerateCompletionListForResolveResult(rr, expr.Context));
}
}
private static void OnCommandTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
var cell = d as ConditionCell;
cell.CommandText = e.NewValue.ToString();
}
}
}

56
src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/Converters.cs

@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
namespace Debugger.AddIn.Pads.Controls
{
public class TreeListViewConverter : IValueConverter
{
private const double INDENTATION_SIZE = 10;
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) return null;
if (targetType == typeof(double) && typeof(DependencyObject).IsAssignableFrom(value.GetType()))
{
DependencyObject element = value as DependencyObject;
int level = -1;
for (; element != null; element = VisualTreeHelper.GetParent(element)) {
if (typeof(TreeViewItem).IsAssignableFrom(element.GetType())) {
level++;
}
}
return INDENTATION_SIZE * level;
}
throw new NotSupportedException();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException("This method is not supported.");
}
}
public class BoolToVisibilityConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType,
object parameter, CultureInfo culture)
{
bool val = bool.Parse(parameter.ToString());
return val == (bool.Parse(values[0].ToString()) && bool.Parse(values[1].ToString())) ? Visibility.Visible : Visibility.Collapsed;
}
public object[] ConvertBack(object value, Type[] targetTypes,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

74
src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/TreeListView.cs

@ -0,0 +1,74 @@ @@ -0,0 +1,74 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using Debugger.AddIn.TreeModel;
namespace Debugger.AddIn.Pads.Controls
{
/// <summary>
/// Represents a control that displays hierarchical data in a tree structure
/// that has items that can expand and collapse.
/// </summary>
public class TreeListView : TreeView
{
static TreeListView()
{
//Override the default style and the default control template
DefaultStyleKeyProperty.OverrideMetadata(typeof(TreeListView), new FrameworkPropertyMetadata(typeof(TreeListView)));
}
/// <summary>
/// Initialize a new instance of TreeListView.
/// </summary>
public TreeListView()
{
Columns = new GridViewColumnCollection();
}
#region Properties
/// <summary>
/// Gets or sets the collection of System.Windows.Controls.GridViewColumn
/// objects that is defined for this TreeListView.
/// </summary>
public GridViewColumnCollection Columns
{
get { return (GridViewColumnCollection)GetValue(ColumnsProperty); }
set { SetValue(ColumnsProperty, value); }
}
/// <summary>
/// Gets or sets whether columns in a TreeListView can be
/// reordered by a drag-and-drop operation. This is a dependency property.
/// </summary>
public bool AllowsColumnReorder
{
get { return (bool)GetValue(AllowsColumnReorderProperty); }
set { SetValue(AllowsColumnReorderProperty, value); }
}
#endregion
#region Static Dependency Properties
// Using a DependencyProperty as the backing store for AllowsColumnReorder. This enables animation, styling, binding, etc...
public static readonly DependencyProperty AllowsColumnReorderProperty =
DependencyProperty.Register("AllowsColumnReorder", typeof(bool), typeof(TreeListView), new UIPropertyMetadata(null));
// Using a DependencyProperty as the backing store for Columns. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ColumnsProperty =
DependencyProperty.Register("Columns", typeof(GridViewColumnCollection),
typeof(TreeListView),
new UIPropertyMetadata(null));
#endregion
}
/// <summary>
/// Represents a control that can switch states in order to expand a node of a TreeListView.
/// </summary>
public class TreeListViewExpander : ToggleButton { }
}

330
src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml

@ -0,0 +1,330 @@ @@ -0,0 +1,330 @@
<?xml version="1.0" encoding="utf-8"?>
<UserControl
x:Class="Debugger.AddIn.Pads.Controls.WatchList" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:localControls="clr-namespace:Debugger.AddIn.Pads.Controls" xmlns:core="http://icsharpcode.net/sharpdevelop/core"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Background="White">
<UserControl.Resources>
<localControls:BoolToVisibilityConverter
x:Key="boolToVisibility" />
<localControls:TreeListViewConverter
x:Key="TreeListViewConverter" />
<Style
x:Key="BorderStyle"
TargetType="Border">
<Setter
Property="BorderBrush"
Value="LightGray" />
<Setter
Property="BorderThickness"
Value="1,0,1,1"></Setter>
<Setter
Property="VerticalAlignment"
Value="Center" />
<Setter
Property="HorizontalAlignment"
Value="Stretch" />
</Style>
<Style
TargetType="{x:Type TextBox}"
x:Key="TextBoxStyle">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Background" Value="White"/>
<Setter
Property="VerticalAlignment"
Value="Center" />
<Setter
Property="Visibility">
<Setter.Value>
<MultiBinding
Converter="{StaticResource boolToVisibility}"
ConverterParameter="True">
<Binding
Path="CanSetText" />
<Binding
Path="IsSelected"
RelativeSource="{RelativeSource AncestorType=TreeViewItem}" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
<Style
TargetType="{x:Type TextBlock}"
x:Key="TextBlockStyle">
<Setter
Property="VerticalAlignment"
Value="Center" />
<Setter
Property="Visibility">
<Setter.Value>
<MultiBinding
Converter="{StaticResource boolToVisibility}"
ConverterParameter="False">
<Binding
Path="CanSetText" />
<Binding
Path="IsSelected"
RelativeSource="{RelativeSource AncestorType=TreeViewItem}" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
<Style
x:Key="ExpandToggleStyle"
TargetType="{x:Type ToggleButton}">
<Setter
Property="Focusable"
Value="False" />
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="ToggleButton">
<Grid
Width="21"
Height="16">
<Path
x:Name="ExpandPath"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Margin="5,0,1,1"
Stroke="Black"
Fill="Transparent"
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" />
<Setter
TargetName="ExpandPath"
Property="Fill"
Value="Black" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- TreeViewItem-->
<ControlTemplate
TargetType="TreeViewItem"
x:Key="TreeListViewItem">
<StackPanel>
<Border
Style="{StaticResource BorderStyle}"
x:Name="Border">
<GridViewRowPresenter
Content="{TemplateBinding Header}"
Columns="{Binding Columns,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=localControls:TreeListView}}" />
</Border>
<ItemsPresenter
x:Name="ItemsPresenter"
Visibility="Collapsed" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger
Property="IsExpanded"
Value="True">
<Setter
TargetName="ItemsPresenter"
Property="Visibility"
Value="Visible" />
</Trigger>
<Trigger
Property="IsSelected"
Value="true">
<Setter
TargetName="Border"
Property="Background"
Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
<Setter
Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition
Property="IsSelected"
Value="true" />
<Condition
Property="IsSelectionActive"
Value="false" />
</MultiTrigger.Conditions>
<Setter
TargetName="Border"
Property="Background"
Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
<Setter
Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
</MultiTrigger>
<Trigger
Property="IsEnabled"
Value="false">
<Setter
Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<!--TreeListViewExpander-->
<ControlTemplate
TargetType="{x:Type localControls:TreeListViewExpander}"
x:Key="TreeListViewExpander">
<StackPanel
Orientation="Horizontal"
x:Name="ContainerElement">
<FrameworkElement
Width="{Binding RelativeSource={x:Static RelativeSource.Self},Converter={StaticResource TreeListViewConverter}}" />
<ToggleButton
Style="{StaticResource ExpandToggleStyle}"
IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=TreeViewItem}}" />
</StackPanel>
</ControlTemplate>
<!--TreeListView-->
<Style
TargetType="{x:Type localControls:TreeListView}">
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type localControls:TreeListView}">
<ControlTemplate.Resources>
<Style
TargetType="TreeViewItem">
<Setter
Property="Template"
Value="{StaticResource TreeListViewItem}" />
</Style>
<Style
TargetType="localControls:TreeListViewExpander">
<Setter
Property="Template"
Value="{StaticResource TreeListViewExpander}" />
</Style>
</ControlTemplate.Resources>
<Border
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ScrollViewer
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Disabled">
<Grid>
<Grid.RowDefinitions>
<RowDefinition
Height="Auto" />
<RowDefinition
Height="*" />
</Grid.RowDefinitions>
<GridViewHeaderRowPresenter
Columns="{TemplateBinding Columns}"
AllowsColumnReorder="{TemplateBinding AllowsColumnReorder}" />
<ScrollViewer
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"
Grid.Row="1">
<ItemsPresenter />
</ScrollViewer>
</Grid>
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Name column -->
<DataTemplate
x:Key="CellTemplate_Name">
<StackPanel
Orientation="Horizontal">
<localControls:TreeListViewExpander
x:Name="Expander" />
<Image
MaxHeight="16"
MaxWidth="16"
Margin="3,0,0,0"
Source="{Binding Path=ImageSource}"
VerticalAlignment="Center" />
<TextBlock
Margin="3,0,0,0"
MinWidth="400"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Text="{Binding Path=Name}" />
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger
Binding="{Binding Path=HasChildNodes}"
Value="False">
<Setter
TargetName="Expander"
Property="Visibility"
Value="Hidden" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<!-- Value column -->
<DataTemplate
x:Key="CellTemplate_Value">
<StackPanel
Orientation="Horizontal">
<TextBlock
VerticalAlignment="Center"
MinWidth="200"
Text="{Binding Path=Text}"
Style="{StaticResource TextBlockStyle}" />
<TextBox
Text="{Binding Path=Text, Mode=OneWay}"
Style="{StaticResource TextBoxStyle}" KeyUp="TextBox_KeyUp" />
</StackPanel>
</DataTemplate>
<!-- Type column -->
<DataTemplate
x:Key="CellTemplate_Type">
<TextBlock
VerticalAlignment="Center"
MinWidth="200"
Text="{Binding Path=Type}" />
</DataTemplate>
</UserControl.Resources>
<DockPanel>
<localControls:TreeListView
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding Path=WatchItems}"
x:Name="MyList">
<localControls:TreeListView.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding ChildNodes}"/>
</localControls:TreeListView.ItemTemplate>
<localControls:TreeListView.Resources>
<Style x:Key="ColumnHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left"></Setter>
</Style>
</localControls:TreeListView.Resources>
<localControls:TreeListView.Columns>
<GridViewColumn
Width="400"
HeaderContainerStyle="{StaticResource ColumnHeaderStyle}"
Header="{core:Localize Global.Name}"
CellTemplate="{StaticResource CellTemplate_Name}"></GridViewColumn>
<GridViewColumn
Width="200"
HeaderContainerStyle="{StaticResource ColumnHeaderStyle}"
Header="{core:Localize Dialog.HighlightingEditor.Properties.Value}"
CellTemplate="{StaticResource CellTemplate_Value}" />
<GridViewColumn
Width="200"
HeaderContainerStyle="{StaticResource ColumnHeaderStyle}"
Header="{core:Localize ResourceEditor.ResourceEdit.TypeColumn}"
CellTemplate="{StaticResource CellTemplate_Type}" />
</localControls:TreeListView.Columns>
</localControls:TreeListView>
</DockPanel>
</UserControl>

56
src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml.cs

@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using Debugger.AddIn.TreeModel;
namespace Debugger.AddIn.Pads.Controls
{
public partial class WatchList : UserControl
{
private ObservableCollection<TreeNode> items = new ObservableCollection<TreeNode>();
public WatchList()
{
InitializeComponent();
}
void TextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key != Key.Enter && e.Key != Key.Escape)
{
e.Handled = true;
return;
}
if (e.Key == Key.Enter) {
if(SelectedNode is ExpressionNode) {
var node = (ExpressionNode)SelectedNode;
node.SetText(((TextBox)sender).Text);
}
}
if (e.Key == Key.Enter || e.Key == Key.Escape) {
for (int i = 0; i < MyList.Items.Count; i++) {
TreeViewItem child = (TreeViewItem)MyList.ItemContainerGenerator.ContainerFromIndex(i);
child.IsSelected = false;
}
}
}
public ObservableCollection<TreeNode> WatchItems { get { return items; } }
public TreeNode SelectedNode {
get {
return this.MyList.SelectedItem as TreeNode;
}
}
}
}

81
src/AddIns/Debugger/Debugger.AddIn/Pads/LocalVarPad.cs

@ -1,26 +1,21 @@ @@ -1,26 +1,21 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the BSD license (for details please see \src\AddIns\Debugger\Debugger.AddIn\license.txt)
using System.Windows.Forms;
using Aga.Controls.Tree;
using Aga.Controls.Tree.NodeControls;
using System.Collections.ObjectModel;
using Debugger;
using Debugger.AddIn.Pads.Controls;
using Debugger.AddIn.TreeModel;
using ICSharpCode.Core;
using Exception=System.Exception;
using Exception = System.Exception;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
public class LocalVarPad : DebuggerPad
{
TreeViewAdv localVarList;
WatchList localVarList;
Process debuggedProcess;
static LocalVarPad instance;
readonly TreeColumn nameColumn = new TreeColumn();
readonly TreeColumn valColumn = new TreeColumn();
readonly TreeColumn typeColumn = new TreeColumn();
public LocalVarPad()
{
instance = this;
@ -46,44 +41,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -46,44 +41,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
protected override void InitializeComponents()
{
localVarList = new TreeViewAdv();
localVarList.Columns.Add(nameColumn);
localVarList.Columns.Add(valColumn);
localVarList.Columns.Add(typeColumn);
localVarList.UseColumns = true;
localVarList.SelectionMode = TreeSelectionMode.Single;
localVarList.LoadOnDemand = true;
NodeIcon iconControl = new ItemIcon();
iconControl.ParentColumn = nameColumn;
localVarList.NodeControls.Add(iconControl);
NodeTextBox nameControl = new ItemName();
nameControl.ParentColumn = nameColumn;
localVarList.NodeControls.Add(nameControl);
NodeTextBox textControl = new ItemText();
textControl.ParentColumn = valColumn;
localVarList.NodeControls.Add(textControl);
NodeTextBox typeControl = new ItemType();
typeControl.ParentColumn = typeColumn;
localVarList.NodeControls.Add(typeControl);
localVarList.AutoRowHeight = true;
RedrawContent();
ResourceService.LanguageChanged += delegate { RedrawContent(); };
}
public void RedrawContent()
{
nameColumn.Header = ResourceService.GetString("Global.Name");
nameColumn.Width = 250;
valColumn.Header = ResourceService.GetString("Dialog.HighlightingEditor.Properties.Value");
valColumn.Width = 300;
typeColumn.Header = ResourceService.GetString("ResourceEditor.ResourceEdit.TypeColumn");
typeColumn.Width = 250;
localVarList = new WatchList();
}
protected override void SelectProcess(Process process)
@ -106,26 +64,39 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -106,26 +64,39 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public override void RefreshPad()
{
if (debuggedProcess == null || debuggedProcess.IsRunning || debuggedProcess.SelectedStackFrame == null) {
localVarList.Root.Children.Clear();
localVarList.WatchItems.Clear();
return;
}
using(new PrintTimes("Local Variables refresh")) {
try {
localVarList.BeginUpdate();
Utils.DoEvents(debuggedProcess);
TreeViewVarNode.SetContentRecursive(debuggedProcess, localVarList, new StackFrameNode(debuggedProcess.SelectedStackFrame).ChildNodes);
} catch(AbortedBecauseDebuggeeResumedException) {
} catch(Exception) {
foreach (var item in new StackFrameNode(debuggedProcess.SelectedStackFrame).ChildNodes) {
if (!localVarList.WatchItems.ContainsItem(item))
localVarList.WatchItems.Add(item);
}
}
catch(AbortedBecauseDebuggeeResumedException) { }
catch(Exception ex) {
if (debuggedProcess == null || debuggedProcess.HasExited) {
// Process unexpectedly exited
} else {
throw;
MessageService.ShowException(ex);
}
} finally {
localVarList.EndUpdate();
}
}
}
}
public static class ExtensionForWatchItems
{
public static bool ContainsItem(this ObservableCollection<TreeNode> collection, TreeNode node)
{
foreach (var item in collection)
if (item.CompareTo(node) == 0)
return true;
return false;
}
}
}

2
src/AddIns/Debugger/Debugger.AddIn/Pads/WatchInputBox.xaml

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<src:BaseWatchBox
x:Class="Debugger.AddIn.Pads.WatchInputBox" xmlns:src="clr-namespace:ICSharpCode.SharpDevelop.Gui.Pads;assembly=ICSharpCode.SharpDevelop" 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:widgets="http://icsharpcode.net/sharpdevelop/widgets"
Style="{x:Static core:GlobalStyles.DialogWindowStyle}"

52
src/AddIns/Debugger/Debugger.AddIn/Pads/WatchInputBox.xaml.cs

@ -1,15 +1,18 @@ @@ -1,15 +1,18 @@
using System;
using System;
using System.IO;
using System.Windows;
using System.Windows.Input;
using ICSharpCode.AvalonEdit;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.NRefactoryResolver;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
using ICSharpCode.SharpDevelop.Gui.Pads;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Services;
namespace Debugger.AddIn.Pads
@ -20,6 +23,7 @@ namespace Debugger.AddIn.Pads @@ -20,6 +23,7 @@ namespace Debugger.AddIn.Pads
public partial class WatchInputBox : BaseWatchBox
{
private NRefactoryResolver resolver;
private string language;
public WatchInputBox(string text, string caption) : base()
{
@ -29,11 +33,20 @@ namespace Debugger.AddIn.Pads @@ -29,11 +33,20 @@ namespace Debugger.AddIn.Pads
text = StringParser.Parse(text);
this.Title = StringParser.Parse(caption);
this.ConsolePanel.Content = console;
if (ProjectService.CurrentProject == null) return;
// get language
language = ProjectService.CurrentProject.Language;
resolver = new NRefactoryResolver(LanguageProperties.GetLanguage(language));
// FIXME: for testing only
var language = LanguageProperties.CSharp;
resolver = new NRefactoryResolver(language);
console.SetHighlighting("C#");
// FIXME set language
if (language == "VB" || language == "VBNet") {
console.SetHighlighting("VBNET");
}
else {
console.SetHighlighting("C#");
}
// get process
WindowsDebugger debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
@ -83,8 +96,35 @@ namespace Debugger.AddIn.Pads @@ -83,8 +96,35 @@ namespace Debugger.AddIn.Pads
}
}
private bool CheckSyntax()
{
string command = console.CommandText.Trim();
// FIXME workaround the NRefactory issue that needs a ; at the end
if (language == "C#") {
if(!command.EndsWith(";"))
command += ";";
// FIXME only one string should be available; highlighting expects C#, supproted language, CSharp
language = "CSharp";
}
SupportedLanguage supportedLanguage = (SupportedLanguage)Enum.Parse(typeof(SupportedLanguage), language.ToString(), true);
using (var parser = ParserFactory.CreateParser(supportedLanguage, new StringReader(command))) {
parser.ParseExpression();
if (parser.Errors.Count > 0) {
MessageService.ShowError(parser.Errors.ErrorOutput);
return false;
}
}
return true;
}
private void AcceptButton_Click(object sender, RoutedEventArgs e)
{
if (!this.CheckSyntax())
return;
this.DialogResult = true;
this.Close();
}
@ -95,4 +135,4 @@ namespace Debugger.AddIn.Pads @@ -95,4 +135,4 @@ namespace Debugger.AddIn.Pads
this.Close();
}
}
}
}

149
src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPad.cs

@ -3,29 +3,26 @@ @@ -3,29 +3,26 @@
using System;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Forms.Integration;
using System.Windows;
using System.Windows.Input;
using Aga.Controls.Tree;
using Aga.Controls.Tree.NodeControls;
using Debugger;
using Debugger.AddIn;
using Debugger.AddIn.Pads.Controls;
using Debugger.AddIn.TreeModel;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.Visitors;
using ICSharpCode.SharpDevelop.Project;
using Exception = System.Exception;
namespace ICSharpCode.SharpDevelop.Gui.Pads
{
public class WatchPad : DebuggerPad
{
TreeViewAdv watchList;
WatchList watchList;
Process debuggedProcess;
List<TextNode> watches;
static WatchPad instance;
/// <remarks>Always check if Instance is null, might be null if pad is not opened!</remarks>
@ -37,15 +34,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -37,15 +34,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
{
instance = this;
}
public List<TextNode> Watches {
get { return watches; }
}
readonly TreeColumn nameColumn = new TreeColumn();
readonly TreeColumn valColumn = new TreeColumn();
readonly TreeColumn typeColumn = new TreeColumn();
/// <remarks>
/// This is not used anywhere, but it is neccessary to be overridden in children of AbstractPadContent.
/// </remarks>
@ -61,74 +50,51 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -61,74 +50,51 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
protected override void InitializeComponents()
{
watchList = new TreeViewAdv();
watchList.Columns.Add(nameColumn);
watchList.Columns.Add(valColumn);
watchList.Columns.Add(typeColumn);
watchList.UseColumns = true;
watchList.SelectionMode = TreeSelectionMode.Single;
watchList.LoadOnDemand = true;
NodeIcon iconControl = new ItemIcon();
iconControl.ParentColumn = nameColumn;
watchList.NodeControls.Add(iconControl);
NodeTextBox nameControl = new WatchItemName();
nameControl.ParentColumn = nameColumn;
watchList.NodeControls.Add(nameControl);
NodeTextBox textControl = new ItemText();
textControl.ParentColumn = valColumn;
watchList.NodeControls.Add(textControl);
NodeTextBox typeControl = new ItemType();
typeControl.ParentColumn = typeColumn;
watchList.NodeControls.Add(typeControl);
watchList.AutoRowHeight = true;
watchList.MouseDoubleClick += new MouseEventHandler(watchList_DoubleClick);
watchList.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/WatchPad/ContextMenu");
watchList = new WatchList();
watchList.MouseDoubleClick += watchList_DoubleClick;
watchList.ContextMenu = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/WatchPad/ContextMenu");
watchList.AllowDrop = true;
watchList.DragEnter += new DragEventHandler(watchList_DragEnter);
watchList.DragDrop += new DragEventHandler(watchList_DragDrop);
watchList.KeyUp += new KeyEventHandler(watchList_KeyUp);
watches = new List<TextNode>();
ResourceService.LanguageChanged += delegate { OnLanguageChanged(); };
OnLanguageChanged();
watchList.DragEnter += watchList_DragOver;
watchList.Drop += watchList_Drop;
watchList.KeyUp += watchList_KeyUp;
}
void watchList_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete) {
if (e.Key == Key.Delete) {
RemoveWatchCommand cmd = new RemoveWatchCommand { Owner = this };
cmd.Run();
}
}
void watchList_DragDrop(object sender, DragEventArgs e)
void watchList_Drop(object sender, DragEventArgs e)
{
watchList.BeginUpdate();
TextNode text = new TextNode(e.Data.GetData(DataFormats.StringFormat).ToString(), SupportedLanguage.CSharp);
TreeViewVarNode node = new TreeViewVarNode(this.debuggedProcess, this.watchList, text);
watches.Add(text);
watchList.Root.Children.Add(node);
watchList.EndUpdate();
if (ProjectService.CurrentProject == null) return;
if (e.Data == null) return;
if (!e.Data.GetDataPresent(DataFormats.StringFormat)) return;
if (string.IsNullOrEmpty(e.Data.GetData(DataFormats.StringFormat).ToString())) return;
node.IsSelected = true;
string language = ProjectService.CurrentProject.Language;
// FIXME languages
TextNode text = new TextNode(e.Data.GetData(DataFormats.StringFormat).ToString(),
language == "VB" || language == "VBNet" ? SupportedLanguage.VBNet : SupportedLanguage.CSharp);
if (!watchList.WatchItems.Contains(text))
watchList.WatchItems.ContainsItem(text);
this.RefreshPad();
}
void watchList_DragEnter(object sender, DragEventArgs e)
void watchList_DragOver(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.StringFormat)) {
e.Effect = DragDropEffects.Copy;
e.Effects = DragDropEffects.Copy;
}
else {
e.Effect = DragDropEffects.None;
e.Effects = DragDropEffects.None;
e.Handled = true;
}
}
@ -143,23 +109,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -143,23 +109,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void ResetPad(object sender, EventArgs e)
{
watchList.BeginUpdate();
watchList.Root.Children.Clear();
string language = ProjectService.CurrentProject.Language;
foreach (TextNode text in watches)
watchList.Root.Children.Add(new TreeViewVarNode(this.debuggedProcess, this.watchList, text));
// rebuild list
var nodes = new List<TreeNode>();
foreach (var nod in watchList.WatchItems)
nodes.Add(new TextNode(nod.Name,
language == "VB" || language == "VBNet" ? SupportedLanguage.VBNet : SupportedLanguage.CSharp));
watchList.EndUpdate();
}
void OnLanguageChanged()
{
nameColumn.Header = ResourceService.GetString("Global.Name");
nameColumn.Width = 250;
valColumn.Header = ResourceService.GetString("Dialog.HighlightingEditor.Properties.Value");
valColumn.Width = 300;
typeColumn.Header = ResourceService.GetString("ResourceEditor.ResourceEdit.TypeColumn");
typeColumn.Width = 250;
watchList.WatchItems.Clear();
foreach (var nod in nodes)
watchList.WatchItems.Add(nod);
}
protected override void SelectProcess(Process process)
@ -188,30 +148,31 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -188,30 +148,31 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
using(new PrintTimes("Watch Pad refresh")) {
try {
watchList.BeginUpdate();
Utils.DoEvents(debuggedProcess);
List<TreeViewVarNode> nodes = new List<TreeViewVarNode>();
List<TreeNode> nodes = new List<TreeNode>();
foreach (var nod in watches) {
foreach (var nod in watchList.WatchItems) {
try {
LoggingService.Info("Evaluating: " + (string.IsNullOrEmpty(nod.Name) ? "is null or empty!" : nod.Name));
var nodExpression = debugger.GetExpression(nod.Name);
//Value val = ExpressionEvaluator.Evaluate(nod.Name, nod.Language, debuggedProcess.SelectedStackFrame);
ExpressionNode valNode = new ExpressionNode(null, nod.Name, nodExpression);
nodes.Add(new TreeViewVarNode(debuggedProcess, watchList, valNode));
} catch (GetValueException) {
nodes.Add(valNode);
}
catch (GetValueException) {
string error = String.Format(StringParser.Parse("${res:MainWindow.Windows.Debug.Watch.InvalidExpression}"), nod.Name);
ErrorInfoNode infoNode = new ErrorInfoNode(nod.Name, error);
nodes.Add(new TreeViewVarNode(debuggedProcess, watchList, infoNode));
nodes.Add(infoNode);
}
}
watchList.Root.Children.Clear();
foreach (TreeViewVarNode nod in nodes)
watchList.Root.Children.Add(nod);
} catch(AbortedBecauseDebuggeeResumedException) {
} catch(Exception ex) {
// rebuild list
watchList.WatchItems.Clear();
foreach (var nod in nodes)
watchList.WatchItems.Add(nod);
}
catch(AbortedBecauseDebuggeeResumedException) { }
catch(Exception ex) {
if (debuggedProcess == null || debuggedProcess.HasExited) {
// Process unexpectedly exited
} else {
@ -219,8 +180,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -219,8 +180,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
}
watchList.EndUpdate();
}
}
}

55
src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadCommands.cs

@ -3,10 +3,12 @@ @@ -3,10 +3,12 @@
using System;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows.Forms;
using Aga.Controls.Tree;
using Debugger.AddIn.Pads;
using Debugger.AddIn.Pads.Controls;
using Debugger.AddIn.TreeModel;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
@ -14,6 +16,7 @@ using ICSharpCode.Core.WinForms; @@ -14,6 +16,7 @@ using ICSharpCode.Core.WinForms;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui.Pads;
using ICSharpCode.SharpDevelop.Project;
namespace Debugger.AddIn
{
@ -23,7 +26,6 @@ namespace Debugger.AddIn @@ -23,7 +26,6 @@ namespace Debugger.AddIn
{
if (this.Owner is WatchPad) {
WatchPad pad = (WatchPad)this.Owner;
TreeViewAdv ctrl = (TreeViewAdv)pad.Control;
var inputWindow = new WatchInputBox(StringParser.Parse("${res:MainWindow.Windows.Debug.Watch.AddWatch}"),
StringParser.Parse("${res:MainWindow.Windows.Debug.Watch.EnterExpression}"));
@ -35,13 +37,17 @@ namespace Debugger.AddIn @@ -35,13 +37,17 @@ namespace Debugger.AddIn
string input = inputWindow.CommandText;
if (!string.IsNullOrEmpty(input)) {
ctrl.BeginUpdate();
TextNode text = new TextNode(input, SupportedLanguage.CSharp);
TreeViewVarNode node = new TreeViewVarNode(pad.Process, ctrl, text);
// get language
if (ProjectService.CurrentProject == null) return;
pad.Watches.Add(text);
ctrl.Root.Children.Add(node);
ctrl.EndUpdate();
string language = ProjectService.CurrentProject.Language;
TextNode text = new TextNode(input,
language == "VB" || language == "VBNet" ? SupportedLanguage.VBNet : SupportedLanguage.CSharp);
var list = (WatchList)pad.Control;
if(!list.WatchItems.ContainsItem(text))
list.WatchItems.Add(text);
}
pad.RefreshPad();
@ -55,19 +61,14 @@ namespace Debugger.AddIn @@ -55,19 +61,14 @@ namespace Debugger.AddIn
{
if (this.Owner is WatchPad) {
WatchPad pad = (WatchPad)this.Owner;
TreeNodeAdv node = ((TreeViewAdv)pad.Control).SelectedNode;
var list = (WatchList)pad.Control;
var node = list.SelectedNode;
if (node == null)
return;
while (node.Parent != ((TreeViewAdv)pad.Control).Root)
{
node = node.Parent;
}
pad.Watches.RemoveAt(node.Index);
((TreeViewAdv)pad.Control).Root.Children.Remove(node);
list.WatchItems.Remove(node);
((WatchPad)this.Owner).RefreshPad();
}
@ -90,11 +91,23 @@ namespace Debugger.AddIn @@ -90,11 +91,23 @@ namespace Debugger.AddIn
{
if (this.Owner is WatchPad) {
WatchPad pad = (WatchPad)this.Owner;
((TreeViewAdv)pad.Control).BeginUpdate();
pad.Watches.Clear();
((TreeViewAdv)pad.Control).Root.Children.Clear();
((TreeViewAdv)pad.Control).EndUpdate();
var list = (WatchList)pad.Control;
list.WatchItems.Clear();
}
}
}
public class CopyToClipboardCommand : AbstractMenuCommand
{
public override void Run()
{
if (this.Owner is WatchPad) {
WatchPad pad = (WatchPad)this.Owner;
var list = (WatchList)pad.Control;
if (list.SelectedNode is ExpressionNode) {
string text = ((ExpressionNode)list.SelectedNode).FullText;
ClipboardWrapper.SetText(text);
}
}
}
}

26
src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadModel.cs

@ -19,13 +19,13 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -19,13 +19,13 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
this.Language = language;
}
public bool CanSetText {
public override bool CanSetText {
get {
return true;
}
}
public bool SetText(string text)
public new bool SetText(string text)
{
this.Text = text;
return true;
@ -74,17 +74,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -74,17 +74,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
MessageBox.Show("You can not set name to an empty string!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
if (((TreeViewVarNode)node).Content is ExpressionNode) {
WatchPad.Instance.Watches.RemoveAll(item => item.Name == ((ExpressionNode)((TreeViewVarNode)node).Content).Name);
((ExpressionNode)((TreeViewVarNode)node).Content).Name = value.ToString();
} else {
if (((TreeViewVarNode)node).Content is TextNode) {
WatchPad.Instance.Watches.RemoveAll(item => item.Name == ((TextNode)((TreeViewVarNode)node).Content).Name);
((TextNode)((TreeViewVarNode)node).Content).Name = value.ToString();
}
}
WatchPad.Instance.Watches.Add(new TextNode(value as string, SupportedLanguage.CSharp));
// if (((TreeViewVarNode)node).Content is ExpressionNode) {
// WatchPad.Instance.Watches.RemoveAll(item => item.Name == ((ExpressionNode)((TreeViewVarNode)node).Content).Name);
// ((ExpressionNode)((TreeViewVarNode)node).Content).Name = value.ToString();
// } else {
// if (((TreeViewVarNode)node).Content is TextNode) {
// WatchPad.Instance.Watches.RemoveAll(item => item.Name == ((TextNode)((TreeViewVarNode)node).Content).Name);
// ((TextNode)((TreeViewVarNode)node).Content).Name = value.ToString();
// }
// }
//
// WatchPad.Instance.Watches.Add(new TextNode(value as string, SupportedLanguage.CSharp));
}
}
public override void MouseDown(TreeNodeAdvMouseEventArgs args)

74
src/AddIns/Debugger/Debugger.AddIn/TreeModel/ExpressionNode.cs

@ -3,6 +3,7 @@ @@ -3,6 +3,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.Reflection;
@ -26,7 +27,7 @@ namespace Debugger.AddIn.TreeModel @@ -26,7 +27,7 @@ namespace Debugger.AddIn.TreeModel
/// Node in the tree which can be defined by a debugger expression.
/// The expression will be lazily evaluated when needed.
/// </summary>
public class ExpressionNode: TreeNode, ISetText, IContextMenu
public class ExpressionNode: TreeNode, ISetText, INotifyPropertyChanged
{
bool evaluated;
@ -36,11 +37,16 @@ namespace Debugger.AddIn.TreeModel @@ -36,11 +37,16 @@ namespace Debugger.AddIn.TreeModel
string fullText;
public bool Evaluated {
get { return evaluated; }
set { evaluated = value; }
}
public Expression Expression {
get { return expression; }
}
public bool CanSetText {
public override bool CanSetText {
get {
if (!evaluated) EvaluateExpression();
return canSetText;
@ -54,11 +60,21 @@ namespace Debugger.AddIn.TreeModel @@ -54,11 +60,21 @@ namespace Debugger.AddIn.TreeModel
}
}
public string FullText {
get { return fullText; }
}
public override string Text {
get {
if (!evaluated) EvaluateExpression();
return base.Text;
}
set {
if (value != base.Text) {
base.Text = value;
NotifyPropertyChanged("Text");
}
}
}
public override string Type {
@ -80,7 +96,7 @@ namespace Debugger.AddIn.TreeModel @@ -80,7 +96,7 @@ namespace Debugger.AddIn.TreeModel
if (!evaluated) EvaluateExpression();
return base.HasChildNodes;
}
}
}
/// <summary> Used to determine available VisualizerCommands </summary>
private DebugType expressionType;
@ -269,7 +285,7 @@ namespace Debugger.AddIn.TreeModel @@ -269,7 +285,7 @@ namespace Debugger.AddIn.TreeModel
return size >= 7 && runs <= (size + 7) / 8;
}
public bool SetText(string newText)
public override bool SetText(string newText)
{
Value val = null;
try {
@ -343,19 +359,19 @@ namespace Debugger.AddIn.TreeModel @@ -343,19 +359,19 @@ namespace Debugger.AddIn.TreeModel
return DebuggerResourceService.GetImage("Icons.16x16." + name);
}
public ContextMenuStrip GetContextMenu()
{
if (this.Error != null) return GetErrorContextMenu();
ContextMenuStrip menu = new ContextMenuStrip();
ToolStripMenuItem copyItem;
copyItem = new ToolStripMenuItem();
copyItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.LocalVariables.CopyToClipboard");
copyItem.Checked = false;
copyItem.Click += delegate {
ClipboardWrapper.SetText(fullText);
};
// public ContextMenuStrip GetContextMenu()
// {
// if (this.Error != null) return GetErrorContextMenu();
//
// ContextMenuStrip menu = new ContextMenuStrip();
//
// ToolStripMenuItem copyItem;
// copyItem = new ToolStripMenuItem();
// copyItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.LocalVariables.CopyToClipboard");
// copyItem.Checked = false;
// copyItem.Click += delegate {
// ClipboardWrapper.SetText(fullText);
// };
// ToolStripMenuItem hexView;
// hexView = new ToolStripMenuItem();
@ -371,13 +387,13 @@ namespace Debugger.AddIn.TreeModel @@ -371,13 +387,13 @@ namespace Debugger.AddIn.TreeModel
// WatchPad.Instance.RefreshPad();
// };
menu.Items.AddRange(new ToolStripItem[] {
copyItem,
//hexView
});
return menu;
}
// menu.Items.AddRange(new ToolStripItem[] {
// copyItem,
// //hexView
// });
//
// return menu;
// }
public ContextMenuStrip GetErrorContextMenu()
{
@ -403,5 +419,15 @@ namespace Debugger.AddIn.TreeModel @@ -403,5 +419,15 @@ namespace Debugger.AddIn.TreeModel
return (WindowsDebugger)DebuggerService.CurrentDebugger;
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(info));
}
}
}
}

13
src/AddIns/Debugger/Debugger.AddIn/TreeModel/TreeNode.cs

@ -3,9 +3,10 @@ @@ -3,9 +3,10 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Media;
using System.Linq;
using System.Windows.Media;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Debugging;
@ -58,7 +59,7 @@ namespace Debugger.AddIn.TreeModel @@ -58,7 +59,7 @@ namespace Debugger.AddIn.TreeModel
public virtual string Text
{
get { return text; }
protected set { text = value; }
set { text = value; }
}
public virtual string Type {
@ -79,6 +80,10 @@ namespace Debugger.AddIn.TreeModel @@ -79,6 +80,10 @@ namespace Debugger.AddIn.TreeModel
get { return childNodes != null; }
}
public virtual bool CanSetText {
get { return false; }
}
public virtual IEnumerable<IVisualizerCommand> VisualizerCommands {
get {
return null;
@ -108,5 +113,9 @@ namespace Debugger.AddIn.TreeModel @@ -108,5 +113,9 @@ namespace Debugger.AddIn.TreeModel
{
return this.Name.CompareTo(other.Name);
}
public virtual bool SetText(string newValue) {
return false;
}
}
}

7
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs

@ -56,6 +56,7 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -56,6 +56,7 @@ namespace ICSharpCode.AvalonEdit.Rendering
layers = new UIElementCollection(this, this);
InsertLayer(textLayer, KnownLayer.Text, LayerInsertionPosition.Replace);
}
#endregion
#region Document Property
@ -688,7 +689,9 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -688,7 +689,9 @@ namespace ICSharpCode.AvalonEdit.Rendering
double heightTreeHeight = this.DocumentHeight;
TextEditorOptions options = this.Options;
if (options.AllowScrollBelowDocument) {
heightTreeHeight = Math.Max(heightTreeHeight, Math.Min(heightTreeHeight - 50, scrollOffset.Y) + scrollViewport.Height);
if (!double.IsInfinity(scrollViewport.Height)) {
heightTreeHeight = Math.Max(heightTreeHeight, Math.Min(heightTreeHeight - 50, scrollOffset.Y) + scrollViewport.Height);
}
}
SetScrollData(availableSize,
@ -1525,6 +1528,8 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -1525,6 +1528,8 @@ namespace ICSharpCode.AvalonEdit.Rendering
};
RaiseEvent(args2);
}
#endregion
/// <summary>

4
src/Main/Base/Project/ICSharpCode.SharpDevelop.addin

@ -139,12 +139,12 @@ @@ -139,12 +139,12 @@
class = "ICSharpCode.SharpDevelop.Editor.Search.SearchResultsPad"
defaultPosition = "Bottom, Hidden" />
<!--<Pad id = "Bookmarks"
<Pad id = "Bookmarks"
category = "Tools"
title = "${res:MainWindow.Windows.BookmarksLabel}"
icon = "PadIcons.Bookmarks"
class = "ICSharpCode.SharpDevelop.Bookmarks.BookmarkPad"
defaultPosition = "Bottom, Hidden" />-->
defaultPosition = "Bottom, Hidden" />
<Pad id = "DefinitionView"
category = "Tools"

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

@ -92,6 +92,7 @@ @@ -92,6 +92,7 @@
<Compile Include="..\..\ICSharpCode.SharpDevelop.BuildWorker\ExtendedBinaryReader.cs">
<Link>Src\Project\MSBuildEngine\ExtendedBinaryReader.cs</Link>
</Compile>
<Compile Include="Src\Bookmarks\Pad\Controls\ListViewPad.xaml.cs" />
<Compile Include="Src\Commands\SharpDevelopRoutedCommands.cs" />
<Compile Include="Src\Editor\AddInHighlightingResource.cs" />
<Compile Include="Src\Editor\AvalonEdit\AvalonEditDocumentAdapter.cs" />
@ -817,6 +818,7 @@ @@ -817,6 +818,7 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Page Include="Src\Bookmarks\Pad\Controls\ListViewPad.xaml" />
<Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsBulbControl.xaml" />
<Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsControl.xaml" />
<Page Include="Src\Services\RefactoringService\ContextActions\ContextActionsHeaderedControl.xaml" />
@ -840,6 +842,7 @@ @@ -840,6 +842,7 @@
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
<Folder Include="Src\Bookmarks\Pad\Controls" />
<Folder Include="Src\Editor\AvalonEdit" />
<Folder Include="Src\Editor\CodeCompletion" />
<Folder Include="Src\Editor\Commands" />

8
src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs

@ -1,12 +1,13 @@ @@ -1,12 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.NRefactory;
using System;
using System.ComponentModel;
using System.Globalization;
using System.Text;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
namespace ICSharpCode.SharpDevelop.Bookmarks
{
@ -25,8 +26,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -25,8 +26,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
if (value is string) {
string[] v = ((string)value).Split('|');
if (v.Length != 8)
return null;
FileName fileName = FileName.Create(v[1]);
int lineNumber = int.Parse(v[2], culture);
int columnNumber = int.Parse(v[3], culture);
@ -75,6 +75,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -75,6 +75,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
b.Append(bookmark.LineNumber);
b.Append('|');
b.Append(bookmark.ColumnNumber);
if (bookmark is Debugging.BreakpointBookmark) {
Debugging.BreakpointBookmark bbm = (Debugging.BreakpointBookmark)bookmark;
b.Append('|');
@ -86,6 +87,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -86,6 +87,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
b.Append('|');
b.Append(bbm.Condition);
}
return b.ToString();
} else {
return base.ConvertTo(context, culture, value, destinationType);

16
src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs

@ -90,7 +90,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -90,7 +90,7 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
static void OnAdded(BookmarkEventArgs e)
{
if (Added != null) {
Added(null, e);
Added(null, e);
}
}
@ -121,6 +121,20 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -121,6 +121,20 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
BookmarkManager.AddMark(bookmarkFactory(new Location(column, line)));
}
public static void RemoveAll(Predicate<SDBookmark> match)
{
if (match == null)
throw new ArgumentNullException("Predicate is null!");
for(int index = bookmarks.Count - 1; index >= 0; --index){
SDBookmark bookmark = bookmarks[index];
if(match(bookmark)) {
bookmarks.RemoveAt(index);
OnRemoved(new BookmarkEventArgs(bookmark));
}
}
}
public static event BookmarkEventHandler Removed;
public static event BookmarkEventHandler Added;
}

129
src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs

@ -3,10 +3,13 @@ @@ -3,10 +3,13 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Windows;
using System.Windows.Controls;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.Core.Presentation;
using ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop.Bookmarks
@ -24,18 +27,27 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -24,18 +27,27 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
}
}
protected override ToolBar CreateToolBar()
{
ToolBar toolbar = ToolBarService.CreateToolBar(this, "/SharpDevelop/Pads/BookmarkPad/Toolbar");
toolbar.SetValue(Grid.RowProperty, 0);
return toolbar;
}
protected override void CreateColumns() { }
public BookmarkPad()
{
instance = this;
instance = this;
myPanel.Children.Add(CreateToolBar());
listView.HideColumns(3, 0);
}
}
public abstract class BookmarkPadBase : AbstractPadContent
{
Panel myPanel = new Panel();
ExtTreeView bookmarkTreeView = new ExtTreeView();
Dictionary<FileName, BookmarkFolderNode> fileNodes = new Dictionary<FileName, BookmarkFolderNode>();
protected Grid myPanel = new Grid();
protected ListViewPad listView = new ListViewPad();
public override object Control {
get {
@ -43,88 +55,82 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -43,88 +55,82 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
}
}
public TreeNode CurrentNode {
public ListViewPadItemModel CurrentItem {
get {
return bookmarkTreeView.SelectedNode as TreeNode;
return listView.CurrentItem;
}
}
protected virtual ToolStrip CreateToolStrip()
{
ToolStrip toolStrip = ToolbarService.CreateToolStrip(this, "/SharpDevelop/Pads/BookmarkPad/Toolbar");
toolStrip.Stretch = true;
toolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
return toolStrip;
}
protected abstract ToolBar CreateToolBar();
protected abstract void CreateColumns();
protected BookmarkPadBase()
{
bookmarkTreeView.Dock = DockStyle.Fill;
bookmarkTreeView.CheckBoxes = true;
bookmarkTreeView.HideSelection = false;
bookmarkTreeView.Font = ExtTreeNode.RegularBigFont;
bookmarkTreeView.IsSorted = false;
myPanel.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
myPanel.RowDefinitions.Add(new RowDefinition());
listView.SetValue(Grid.RowProperty, 1);
myPanel.Children.Add(listView);
myPanel.Controls.AddRange(new Control[] { bookmarkTreeView, CreateToolStrip()} );
BookmarkManager.Added += new BookmarkEventHandler(BookmarkManagerAdded);
BookmarkManager.Removed += new BookmarkEventHandler(BookmarkManagerRemoved);
foreach (SDBookmark mark in BookmarkManager.Bookmarks) {
AddMark(mark);
}
listView.ItemActivated += new EventHandler(listView_ItemActivated);
}
public IEnumerable<TreeNode> AllNodes {
public IEnumerable<ListViewPadItemModel> AllItems {
get {
Stack<TreeNode> treeNodes = new Stack<TreeNode>();
foreach (TreeNode node in bookmarkTreeView.Nodes) {
treeNodes.Push(node);
}
while (treeNodes.Count > 0) {
TreeNode node = treeNodes.Pop();
foreach (TreeNode childNode in node.Nodes) {
treeNodes.Push(childNode);
}
yield return node;
foreach (var item in listView.ItemCollection) {
yield return item;
}
}
}
public ListViewPadItemModel NextItem {
get {
return this.listView.NextItem;
}
}
public ListViewPadItemModel PrevItem {
get {
return this.listView.PrevItem;
}
}
public void EnableDisableAll()
{
bool isOneChecked = false;
foreach (TreeNode node in AllNodes) {
if (node is BookmarkNode) {
if (((BookmarkNode)node).Checked) {
isOneChecked = true;
break;
}
}
}
foreach (TreeNode node in AllNodes) {
if (node is BookmarkNode) {
((BookmarkNode)node).Checked = !isOneChecked;
foreach (var node in AllItems) {
if (node.IsChecked) {
isOneChecked = true;
break;
}
}
foreach (var node in AllItems)
node.IsChecked = !isOneChecked;
}
public void SelectItem(ListViewPadItemModel model)
{
listView.CurrentItem = model;
}
void AddMark(SDBookmark mark)
{
if (!ShowBookmarkInThisPad(mark))
return;
if (!fileNodes.ContainsKey(mark.FileName)) {
BookmarkFolderNode folderNode = new BookmarkFolderNode(mark.FileName);
fileNodes.Add(mark.FileName, folderNode);
bookmarkTreeView.Nodes.Add(folderNode);
}
fileNodes[mark.FileName].AddMark(mark);
fileNodes[mark.FileName].Expand();
listView.Add(new ListViewPadItemModel(mark));
}
protected virtual bool ShowBookmarkInThisPad(SDBookmark mark)
{
return mark.IsVisibleInBookmarkPad;
return mark.IsVisibleInBookmarkPad && !(mark is BreakpointBookmark);
}
void BookmarkManagerAdded(object sender, BookmarkEventArgs e)
@ -134,25 +140,18 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -134,25 +140,18 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
void BookmarkManagerRemoved(object sender, BookmarkEventArgs e)
{
if (fileNodes.ContainsKey(e.Bookmark.FileName)) {
fileNodes[e.Bookmark.FileName].RemoveMark(e.Bookmark);
if (fileNodes[e.Bookmark.FileName].Marks.Count == 0) {
bookmarkTreeView.Nodes.Remove(fileNodes[e.Bookmark.FileName]);
fileNodes.Remove(e.Bookmark.FileName);
}
}
listView.Remove(new ListViewPadItemModel(e.Bookmark));
}
void TreeViewDoubleClick(object sender, EventArgs e)
void listView_ItemActivated(object sender, EventArgs e)
{
TreeNode node = bookmarkTreeView.SelectedNode;
var node = CurrentItem;
if (node != null) {
SDBookmark mark = node.Tag as SDBookmark;
SDBookmark mark = node.Mark as SDBookmark;
if (mark != null) {
FileService.JumpToFilePosition(mark.FileName, mark.LineNumber, 1);
}
}
}
}
}
}

44
src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs

@ -4,8 +4,10 @@ @@ -4,8 +4,10 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Debugging;
namespace ICSharpCode.SharpDevelop.Bookmarks
{
@ -35,8 +37,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -35,8 +37,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
public abstract class AbstractDeleteMarkClass : AbstractMenuCommand
{
protected void deleteBookMark (BookmarkNode node) {
ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.RemoveMark(node.Bookmark);
protected void deleteBookMark (SDBookmark bookmark) {
if (bookmark == null) return;
if (bookmark is SDMarkerBookmark) return;
ICSharpCode.SharpDevelop.Bookmarks.BookmarkManager.RemoveMark(bookmark);
}
}
@ -47,23 +51,14 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -47,23 +51,14 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
public override void Run()
{
IEnumerable<TreeNode> nodes = ((BookmarkPadBase)Owner).AllNodes;
foreach(TreeNode innerNode in nodes) {
BookmarkFolderNode folderNode = innerNode as BookmarkFolderNode;
// Its problebly not the most effecient way of doing it, but it works.
if (folderNode != null) {
for (int i = folderNode.Nodes.Count - 1; i >= 0 ; i--)
{
if (folderNode.Nodes[i] is BookmarkNode) {
deleteBookMark(folderNode.Nodes[i] as BookmarkNode);
}
}
}
}
var result = BookmarkManager.Bookmarks
.Where(b => !(b is SDMarkerBookmark))
.Select(b => b);
foreach (var b in result.ToArray())
BookmarkManager.RemoveMark(b);
}
}
/// <summary>
/// Deletes the currently selected <see cref="BookmarkNode" /> or <see cref="BookmarkFolderNode" />
/// </summary>
@ -71,21 +66,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks @@ -71,21 +66,10 @@ namespace ICSharpCode.SharpDevelop.Bookmarks
{
public override void Run()
{
TreeNode node = ((BookmarkPadBase)Owner).CurrentNode;
var node = ((BookmarkPadBase)Owner).CurrentItem;
if (node == null) return;
if (node is BookmarkNode) {
deleteBookMark(node as BookmarkNode);
}
if (node is BookmarkFolderNode) {
BookmarkFolderNode folderNode = node as BookmarkFolderNode;
// We have to start from the top of the array to prevent reordering.
for (int i = folderNode.Nodes.Count - 1; i >= 0 ; i--)
{
if (folderNode.Nodes[i] is BookmarkNode) {
deleteBookMark(folderNode.Nodes[i] as BookmarkNode);
}
}
}
deleteBookMark(node.Mark as SDBookmark);
}
}

43
src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml

@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<UserControl
x:Class="ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls.ListViewPad" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls" xmlns:core="http://icsharpcode.net/sharpdevelop/core"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<Grid.Resources>
<DataTemplate
x:Key="CheckBoxTemplate">
<CheckBox
IsChecked="{Binding Path=IsChecked, Mode=TwoWay}" />
</DataTemplate>
<DataTemplate
x:Key="ImageTemplate">
<Image
Source="{Binding Path=Image, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</Grid.Resources>
<ListView
Name="MyListView"
ItemsSource="{Binding ItemCollection}">
<ListView.View>
<GridView>
<GridViewColumn
Header=""
Width="Auto"
CellTemplate="{StaticResource CheckBoxTemplate}" />
<GridViewColumn
Header=""
Width="Auto"
CellTemplate="{StaticResource ImageTemplate}" />
<GridViewColumn
Header="{core:Localize MainWindow.Windows.BookmarkPad.LocationText}"
Width="Auto"
DisplayMemberBinding="{Binding Path=Location}" />
<GridViewColumn
Header="{core:Localize MainWindow.Windows.BookmarkPad.LanguageHeader}"
Width="Auto"
DisplayMemberBinding="{Binding Path=Language, UpdateSourceTrigger=PropertyChanged}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
</UserControl>

240
src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs

@ -0,0 +1,240 @@ @@ -0,0 +1,240 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Debugging;
namespace ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls
{
/// <summary>
/// ListViewPad inside WPF pads.
/// </summary>
public sealed partial class ListViewPad : UserControl
{
ObservableCollection<ListViewPadItemModel> itemCollection = new ObservableCollection<ListViewPadItemModel>();
public ObservableCollection<ListViewPadItemModel> ItemCollection {
get { return itemCollection; }
}
public event EventHandler ItemActivated;
public ListViewPad()
{
InitializeComponent();
this.MyListView.PreviewMouseDoubleClick += new MouseButtonEventHandler(ListViewPad_PreviewMouseDoubleClick);
this.MyListView.KeyDown += new KeyEventHandler(ListViewPad_KeyDown);
}
public ListViewPadItemModel CurrentItem {
get {
return MyListView.SelectedItem as ListViewPadItemModel;
}
set {
if (value == null) return;
this.MyListView.SelectedItem = value;
}
}
public ListViewPadItemModel NextItem {
get {
bool found = false;
foreach (var line in ItemCollection) {
if (found)
return line;
if (line == MyListView.SelectedItem as ListViewPadItemModel)
found = true;
}
return null;
}
}
public ListViewPadItemModel PrevItem {
get {
bool found = false;
ListViewPadItemModel prev = null;
foreach (var line in ItemCollection) {
if (found)
return prev;
if (line == MyListView.SelectedItem as ListViewPadItemModel) {
found = true;
}
else {
prev = line;
}
}
return prev;
}
}
public void Add(ListViewPadItemModel item)
{
if (item == null) return;
ItemCollection.Add(item);
}
public void Remove(ListViewPadItemModel item)
{
SDBookmark bookmark1 = item.Mark as SDBookmark;
if (bookmark1 is CurrentLineBookmark)
return;
foreach (var line in itemCollection) {
SDBookmark bookmark2 = line.Mark as SDBookmark;
if (bookmark1.FileName == bookmark2.FileName &&
bookmark1.LineNumber == bookmark2.LineNumber) {
ItemCollection.Remove(line);
break;
}
}
}
public void AddColumn(string header, DataTemplate cellTemplate)
{
GridViewColumn column = new GridViewColumn();
column.Header = header;
column.CellTemplate = cellTemplate;
((GridView)this.MyListView.View).Columns.Add(column);
}
/// <summary>
/// Indexes from end to start.
/// </summary>
/// <param name="columnIndex"></param>
public void HideColumns(params int[] columnIndexes)
{
foreach(int i in columnIndexes)
((GridView)MyListView.View).Columns.RemoveAt(i);
}
private void ListViewPad_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var handler = ItemActivated;
if (handler != null)
ItemActivated(this, EventArgs.Empty);
}
private void ListViewPad_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape) {
this.MyListView.UnselectAll();
e.Handled = true;
}
}
}
public sealed class ListViewPadItemModel : INotifyPropertyChanged
{
bool isChecked;
object tag;
string language;
string condition;
ImageSource imageSource;
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
public ListViewPadItemModel(SDBookmark mark)
{
if (mark is BreakpointBookmark) {
isChecked = ((BreakpointBookmark)mark).IsEnabled;
condition = ((BreakpointBookmark)mark).Condition;
language = ((BreakpointBookmark)mark).ScriptLanguage;
}
imageSource = mark.Image.ImageSource;
Location = GetLocation(mark);
Mark = mark;
tag = this;
}
public bool IsChecked {
get {
return isChecked;
}
set {
if (value != isChecked)
{
isChecked = value;
NotifyPropertyChanged("IsChecked");
}
}
}
public SDBookmark Mark {
get; set;
}
public ImageSource Image {
get { return imageSource; }
set {
imageSource = value;
NotifyPropertyChanged("Image");
}
}
public string Location {
get; private set;
}
public string Language {
get { return language; }
set {
language = value;
NotifyPropertyChanged("Language");
}
}
public string Condition {
get { return condition; }
set {
condition = value;
NotifyPropertyChanged("Condition");
}
}
public object Tag {
get { return tag;}
set {
tag = value;
NotifyPropertyChanged("Tag");
}
}
private string GetLocation(SDBookmark bookmark)
{
return string.Format(StringParser.Parse("${res:MainWindow.Windows.BookmarkPad.LineText}"),
Path.GetFileName(bookmark.FileName), bookmark.LineNumber);
}
private void NotifyPropertyChanged(string property)
{
if (property == "IsChecked")
{
if (Mark is BreakpointBookmark)
(Mark as BreakpointBookmark).IsEnabled = isChecked;
}
if (PropertyChanged != null)
{
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(property));
}
}
}
}

71
src/Main/Base/Project/Src/Commands/DebugCommands.cs

@ -2,7 +2,13 @@ @@ -2,7 +2,13 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Bookmarks;
using ICSharpCode.SharpDevelop.Bookmarks.Pad.Controls;
using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
@ -30,6 +36,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -30,6 +36,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
build.Run();
}
}
public class ExecuteWithoutDebugger : Execute
{
public override void Run()
@ -113,6 +120,70 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -113,6 +120,70 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
public class RemoveAllBreakpointsCommand : AbstractMenuCommand
{
public override void Run()
{
if (DebuggerService.Breakpoints.Count <= 0) return;
if(System.Windows.Forms.MessageBox.Show(
StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.Debug.RemoveAllBreakPoints}"),
StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.Debug.RemoveAllBreakPointsCaption}"),
System.Windows.Forms.MessageBoxButtons.YesNo,
System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
BookmarkManager.RemoveAll(b => b is BreakpointBookmark);
}
}
}
public abstract class NextPrevBreakpointCommand : AbstractMenuCommand
{
public void Run(ListViewPadItemModel nextItem)
{
var bookmarkBase = (BookmarkPadBase)Owner;
if (nextItem == null) return;
// get next bookmark
int line = (nextItem.Mark as SDBookmark).LineNumber;
var bookmarks = DebuggerService.Breakpoints;
var bookmark = bookmarks.FirstOrDefault(b => b.LineNumber == line);
if (bookmark == null && bookmarks.Count > 0) {
bookmark = bookmarks[0]; // jump around to first bookmark
}
if (bookmark != null) {
FileService.JumpToFilePosition(bookmark.FileName, bookmark.LineNumber, bookmark.ColumnNumber);
}
// select in tree
bookmarkBase.SelectItem(nextItem);
}
}
public sealed class NextBreakpointCommand : NextPrevBreakpointCommand
{
public override void Run()
{
var bookmarkBase = (BookmarkPadBase)Owner;
var nextItem = bookmarkBase.NextItem;
base.Run(nextItem);
}
}
public sealed class PrevBreakpointCommand : NextPrevBreakpointCommand
{
public override void Run()
{
var bookmarkBase = (BookmarkPadBase)Owner;
var prevItem = bookmarkBase.PrevItem;
base.Run(prevItem);
}
}
public class AttachToProcessCommand : AbstractMenuCommand
{
public override void Run()

31
src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs

@ -262,6 +262,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -262,6 +262,9 @@ namespace ICSharpCode.SharpDevelop.Gui
internal ITextEditor editorAdapter;
internal BeginReadOnlySectionProvider readOnlyRegion;
public event TextCompositionEventHandler TextAreaTextEntered;
public event KeyEventHandler TextAreaPreviewKeyDown;
public ConsoleControl()
{
this.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
@ -279,6 +282,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -279,6 +282,9 @@ namespace ICSharpCode.SharpDevelop.Gui
this.Children.Add(editor);
editor.TextArea.ReadOnlySectionProvider = readOnlyRegion = new BeginReadOnlySectionProvider();
editor.TextArea.TextEntered += new TextCompositionEventHandler(editor_TextArea_TextEntered);
editor.TextArea.PreviewKeyDown += new KeyEventHandler(editor_TextArea_PreviewKeyDown);
}
public ITextEditor TextEditor {
@ -313,6 +319,15 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -313,6 +319,15 @@ namespace ICSharpCode.SharpDevelop.Gui
readOnlyRegion.EndOffset = editor.Document.TextLength;
}
/// <summary>
/// Hides the scroll bar.
/// </summary>
public void HideScrollBar()
{
this.editor.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
this.editor.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
}
public int CommandOffset {
get { return readOnlyRegion.EndOffset; }
}
@ -328,6 +343,22 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -328,6 +343,22 @@ namespace ICSharpCode.SharpDevelop.Gui
editor.Document.Replace(new TextSegment() { StartOffset = readOnlyRegion.EndOffset, EndOffset = editor.Document.TextLength }, value);
}
}
void editor_TextArea_TextEntered(object sender, TextCompositionEventArgs e)
{
TextCompositionEventHandler handler = TextAreaTextEntered;
if (handler != null)
handler(this, e);
}
void editor_TextArea_PreviewKeyDown(object sender, KeyEventArgs e)
{
KeyEventHandler handler = TextAreaPreviewKeyDown;
if (handler != null)
handler(this, e);
}
}
public class BeginReadOnlySectionProvider : IReadOnlySectionProvider

12
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs

@ -243,6 +243,18 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -243,6 +243,18 @@ namespace ICSharpCode.SharpDevelop.Dom
return "[" + base.ToString() + "]";
}
public static LanguageProperties GetLanguage(string language)
{
switch(language)
{
case "VBNet":
case "VB":
return LanguageProperties.VBNet;
default:
return LanguageProperties.CSharp;
}
}
#region CSharpProperties
internal sealed class CSharpProperties : LanguageProperties
{

BIN
src/Main/StartUp/Project/Resources/BitmapResources.resources

Binary file not shown.
Loading…
Cancel
Save