From b53f8635f2f7253c729d6de47b1250c0624e7875 Mon Sep 17 00:00:00 2001 From: eusebiu Date: Sat, 6 Nov 2010 13:52:33 +0200 Subject: [PATCH] Added WPF BreakPointsPad, Watchpad, LocalVarPad + controls --- SharpDevelop.sln | 408 +++++++++--------- data/resources/StringResources.resx | 12 + .../image/BitmapResources/BitmapResources.res | 4 + .../Bookmarks/DeleteAllBreakpoints.PNG | Bin 0 -> 924 bytes .../Bookmarks/DisableAllBreakpoints.PNG | Bin 0 -> 706 bytes .../Bookmarks/NextBreakpoint.png | Bin 0 -> 791 bytes .../Bookmarks/PrevBreakpoint.png | Bin 0 -> 801 bytes .../Debugger.AddIn/Debugger.AddIn.addin | 36 +- .../Debugger.AddIn/Debugger.AddIn.csproj | 11 + .../Debugger.AddIn/Pads/BreakPointsPad.cs | 26 ++ .../Pads/Controls/ConditionCell.xaml | 22 + .../Pads/Controls/ConditionCell.xaml.cs | 190 ++++++++ .../Pads/Controls/Converters.cs | 56 +++ .../Pads/Controls/TreeListView.cs | 74 ++++ .../Pads/Controls/WatchList.xaml | 330 ++++++++++++++ .../Pads/Controls/WatchList.xaml.cs | 56 +++ .../Debugger.AddIn/Pads/LocalVarPad.cs | 81 ++-- .../Debugger.AddIn/Pads/WatchInputBox.xaml | 2 +- .../Debugger.AddIn/Pads/WatchInputBox.xaml.cs | 52 ++- .../Debugger/Debugger.AddIn/Pads/WatchPad.cs | 149 +++---- .../Debugger.AddIn/Pads/WatchPadCommands.cs | 55 ++- .../Debugger.AddIn/Pads/WatchPadModel.cs | 26 +- .../TreeModel/ExpressionNode.cs | 74 ++-- .../Debugger.AddIn/TreeModel/TreeNode.cs | 13 +- .../Rendering/TextView.cs | 7 +- .../Project/ICSharpCode.SharpDevelop.addin | 4 +- .../Project/ICSharpCode.SharpDevelop.csproj | 3 + .../Src/Bookmarks/BookmarkConverter.cs | 8 +- .../Project/Src/Bookmarks/BookmarkManager.cs | 16 +- .../Project/Src/Bookmarks/Pad/BookmarkPad.cs | 129 +++--- .../Pad/BookmarkPadToolbarCommands.cs | 44 +- .../Bookmarks/Pad/Controls/ListViewPad.xaml | 43 ++ .../Pad/Controls/ListViewPad.xaml.cs | 240 +++++++++++ .../Project/Src/Commands/DebugCommands.cs | 71 +++ .../Src/Gui/Pads/AbstractConsolePad.cs | 31 ++ .../Project/Src/LanguageProperties.cs | 12 + .../Resources/BitmapResources.resources | Bin 654336 -> 658445 bytes 37 files changed, 1757 insertions(+), 528 deletions(-) create mode 100644 data/resources/image/BitmapResources/Bookmarks/DeleteAllBreakpoints.PNG create mode 100644 data/resources/image/BitmapResources/Bookmarks/DisableAllBreakpoints.PNG create mode 100644 data/resources/image/BitmapResources/Bookmarks/NextBreakpoint.png create mode 100644 data/resources/image/BitmapResources/Bookmarks/PrevBreakpoint.png create mode 100644 src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml create mode 100644 src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml.cs create mode 100644 src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/Converters.cs create mode 100644 src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/TreeListView.cs create mode 100644 src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml create mode 100644 src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml.cs create mode 100644 src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml create mode 100644 src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs diff --git a/SharpDevelop.sln b/SharpDevelop.sln index 45cf62a003..7a3ed47608 100644 --- a/SharpDevelop.sln +++ b/SharpDevelop.sln @@ -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 {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", "{ 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 {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 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 diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx index 1b0e5e1330..280e6e0218 100644 --- a/data/resources/StringResources.resx +++ b/data/resources/StringResources.resx @@ -5645,6 +5645,15 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs Bookmarks + + {0} @line {1} + + + Location + + + Language + Back @@ -5775,6 +5784,9 @@ Unable to find 'WelcomeDialogId' in Dialogs.wxs Trace + + Condition + Console diff --git a/data/resources/image/BitmapResources/BitmapResources.res b/data/resources/image/BitmapResources/BitmapResources.res index 76615e2224..eaf2aa2126 100644 --- a/data/resources/image/BitmapResources/BitmapResources.res +++ b/data/resources/image/BitmapResources/BitmapResources.res @@ -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 diff --git a/data/resources/image/BitmapResources/Bookmarks/DeleteAllBreakpoints.PNG b/data/resources/image/BitmapResources/Bookmarks/DeleteAllBreakpoints.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9f1007b8ed8d86f98c810300e41ab77188ffd05d GIT binary patch literal 924 zcmV;N17rM&P)4ZLZUdfIn>~Traq=9<5k+)+ZNhVE|izDOksX@+D(+0-Q<(|&F`Gw_k7RE zIkNQJH`pJNM~8c49T^&uMn^{^CQOuGpEWD*4CmpS#`E1 zD3vGi9xkENun))X0)Efk%K7bIqx!vs=e%IhA5!Hoy`4&e>!b?}HU-_doT2&Z0$t7zA_L_Nn0IKR#3=4a_tEl=X& zVdK9BJ>7oUb<^@@{hCZ#HfpiuWYM@|8_Leyu|xwE$LT8h5nJ9?EE#E>Srm`{O0^mnHgDvP_6x3jl0wbG1sG#us4Xu?dSuuE+dt(m zla64(ld7~fdR&G=x;CxCl#)ViQeq@gz2KrqR}&x0(YdoJUY3lrsUb=V_!Rl!xucMq z!6U;r3|E!#Bxeu|~a zSE^x4Dy&AEdA+F^ONx4A>iQzZC8fyd5#<@HjGt5AB4s z82)~LE`!G1h?-R}TQEluFPI{T6+{W1U1_gk%lNZ!6D*#=gS|QQ84KywOec7%6pzv_ z|Hqo}LSg;%|5QtXJJ)y;HHnaB8h)YO_uE$cKZ?UTV`5mpCV1fijjOrse`xzxXz-^k yLa{fcyBy80xZ4}GN^w3yzblyhe@|G9$^QUvw_=Bq+&dfq0000$Hv)9&P|+fcS`?*N!{1#D)*+P%npf2PAUVL9fnX1($F_|6VU8)eSI(H zPW!xZ)u(mKUd)_yv!(8MVeaPa?3tN)#}+PreD)l~c#wwn>8saHnsu|Y<>T`CU$?FQ zvSsa~*;8-!b>5%U^Ke4v_1cOP1vwki(@(8j4b{*%aryd=-rEgTZ|6<_xN6ahMRRWT zb-kK16=7Rd@!lZ6`N3hAcI^e(P}Q|yS#9g(yv)ZPjn5}`-tOzT+u01a?e)BAK(kIn zg)VorUs75H(oonub8>m({^;;4S;^N+axc`B-K(#F*!E%hg6C6uuU8fwjtE|3Y1(XQ z57LlXJ*l>+d3IpPc2~!v0bYkQQm^EuLu`B6-+rgQ;%s{2Zg02chPpL|<{%A;#Xa!_ z9mUbv?N;`)^>x?z`yPl4h1hnbAnQzW-2Nb+O;)DUG&ScHl!G)x=Cp=ofnq1rH*slW zN58xGd@t`EZXnwZ1$gapciLoOJXckz-q7^))}0^?A?fx0Nj0vKMew*hy=u*DU;hOr zhARwomTId{)ljd~H(A@+4-HnI_)6D^Vz_FE=+y&>h0GSm8>_xe_ng9R*07*qoM6N<$f_qPLApigX literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/NextBreakpoint.png b/data/resources/image/BitmapResources/Bookmarks/NextBreakpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..7a621abcd7587d143ac60baeee32bd6d55127f65 GIT binary patch literal 791 zcmV+y1L*vTP)VN^ zCxnq|%*Tl9cxJeNzWz(p4Wkd{^)9d*A1MJ}0ODae6~TTziE= zVRulF+QjFp+x`5+tvsIFKi?XVN?ZnIGNoBAUpB`mV3tRrKRg^=0s-26eOCx1hiKPd zK?9MIE-zvfk4KUcF{(_(c=~0GrKMsdISJ-yIl6;`(dKg;1kggXdmF^8h*plAPsSUy z3e)+ycz;um>4H2=W~uQi+*VgnZIYG7+_!l#Bh%-t!* z+iP0;D1Bif>IDT*B{~585fQ2lfEphRMX=UZ!}jbc7VB#bUjW{6O zEZ*sJ(2&qQlhhfSJv>XOVMP0QihAs4%Qs&B^Mr6;U77e5XAjY;^G@Kyl1JN$e*x%) Vq_?Op`bq!*002ovPDHLkV1go;U>E=Z literal 0 HcmV?d00001 diff --git a/data/resources/image/BitmapResources/Bookmarks/PrevBreakpoint.png b/data/resources/image/BitmapResources/Bookmarks/PrevBreakpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d6fdc33071c855bd90efa26696059756261253 GIT binary patch literal 801 zcmV++1K#|JP)Y?vo!OP8ci{k%~eRZnGiKAZ@DN+ zqbyJ{r`UAn+)Sg)Rcd8v7eWw?jOot&_nu?U={|Je;qV^#{hrJF95!p+(` zLs3g^iefD;xL9ttn?-p%tY33;tm5nhtY`ery|FS*uT(1SiH_Dxiu&$gRwiB* za=*7n}dF(0v53t?K~b@#0M(ZR6t7S45X#b4xcK-nBfw>)Kp>Wwh13=YB5%Bz?KH>4Vc_lWvTsoL>49-#=#w(5Z-gqC=Ph0WhVIwB48}atEo@wRz z!8m#rAalSYo*>UF=u1p2Sr%v!UOa(sjrTC!+Dt?Z_+-2Wr@j5!UaHA5Frd#-2SBue#atxCe9BHYr%4AFnw1C9w9LP1r)9@WD zP~G7|P`U+s)veeqe}J8_CeXv}Q^?U3Azp#$cdoYrU%2A&4D|Jr$h+c%`iuiRB-OAb zDbXDrg${vWML-e3c1A$=%w#sZP|-AlQqvRzC!e)LqUmA;mdHr51IxYti@G(}DAA2D zu->$qnTGdgv@im5aIi1zAd=0rVAB>4+baso>GEc#A>S~Qf8EF0EbZ zeX54#j9l(k5}9p$k+D5A^rl%LJn>9ZxW_r;Vt}82sMXBte+pXQ`%PB#n;o7$&kl-n fv3G?o`hkA|t5?3wikBs)00000NkvXXu0mjf&YN_E literal 0 HcmV?d00001 diff --git a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin index 2c1cdb0d2e..898924b6f7 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin +++ b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin @@ -68,12 +68,12 @@ - + defaultPosition = "Bottom, Hidden" /> - - - + + + @@ -165,4 +165,30 @@ + + + + + + + + + + + diff --git a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj index af61ba9197..8ff2e605e0 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj +++ b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj @@ -91,6 +91,14 @@ CallStackPad.xaml Code + + ConditionCell.xaml + + + + + WatchList.xaml + WatchInputBox.xaml Code @@ -336,6 +344,8 @@ + + @@ -358,6 +368,7 @@ ICSharpCode.Core.WinForms False + diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs index 194d550cc6..d4d5bf4293 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/BreakPointsPad.cs @@ -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 public BreakPointsPad() { InitializeComponents(); + + myPanel.Children.Add(CreateToolBar()); + + CreateColumns(); } void InitializeComponents() @@ -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; diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml new file mode 100644 index 0000000000..20ab0bae89 --- /dev/null +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml.cs new file mode 100644 index 0000000000..8946e8e802 --- /dev/null +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/ConditionCell.xaml.cs @@ -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#"); + } + } + + /// + /// Gets/sets the command text displayed at the command prompt. + /// + 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(); + } + } +} \ No newline at end of file diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/Converters.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/Converters.cs new file mode 100644 index 0000000000..360f52d6ce --- /dev/null +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/Converters.cs @@ -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(); + } + } +} diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/TreeListView.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/TreeListView.cs new file mode 100644 index 0000000000..041c081904 --- /dev/null +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/TreeListView.cs @@ -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 +{ +/// + /// Represents a control that displays hierarchical data in a tree structure + /// that has items that can expand and collapse. + /// + public class TreeListView : TreeView + { + static TreeListView() + { + //Override the default style and the default control template + DefaultStyleKeyProperty.OverrideMetadata(typeof(TreeListView), new FrameworkPropertyMetadata(typeof(TreeListView))); + } + + /// + /// Initialize a new instance of TreeListView. + /// + public TreeListView() + { + Columns = new GridViewColumnCollection(); + } + + #region Properties + /// + /// Gets or sets the collection of System.Windows.Controls.GridViewColumn + /// objects that is defined for this TreeListView. + /// + public GridViewColumnCollection Columns + { + get { return (GridViewColumnCollection)GetValue(ColumnsProperty); } + set { SetValue(ColumnsProperty, value); } + } + + /// + /// Gets or sets whether columns in a TreeListView can be + /// reordered by a drag-and-drop operation. This is a dependency property. + /// + 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 + } + + /// + /// Represents a control that can switch states in order to expand a node of a TreeListView. + /// + public class TreeListViewExpander : ToggleButton { } +} diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml new file mode 100644 index 0000000000..ebdb3b10f4 --- /dev/null +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml.cs new file mode 100644 index 0000000000..8e793188cf --- /dev/null +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/Controls/WatchList.xaml.cs @@ -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 items = new ObservableCollection(); + + 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 WatchItems { get { return items; } } + + public TreeNode SelectedNode { + get { + return this.MyList.SelectedItem as TreeNode; + } + } + } +} \ No newline at end of file diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/LocalVarPad.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/LocalVarPad.cs index 4bbf8592b0..7142c65d5f 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/LocalVarPad.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/LocalVarPad.cs @@ -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 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 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 collection, TreeNode node) + { + foreach (var item in collection) + if (item.CompareTo(node) == 0) + return true; + + return false; + } + } } diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchInputBox.xaml b/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchInputBox.xaml index ed684a0fd1..96473894e2 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchInputBox.xaml +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchInputBox.xaml @@ -1,4 +1,4 @@ - + 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 this.Close(); } } -} +} \ No newline at end of file diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPad.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPad.cs index ea7bb0b3d0..e6e43021b2 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPad.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPad.cs @@ -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 watches; + static WatchPad instance; /// Always check if Instance is null, might be null if pad is not opened! @@ -37,15 +34,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads { instance = this; } - - public List Watches { - get { return watches; } - } - - readonly TreeColumn nameColumn = new TreeColumn(); - readonly TreeColumn valColumn = new TreeColumn(); - readonly TreeColumn typeColumn = new TreeColumn(); - + /// /// This is not used anywhere, but it is neccessary to be overridden in children of AbstractPadContent. /// @@ -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(); - - 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 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(); + 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 using(new PrintTimes("Watch Pad refresh")) { try { - watchList.BeginUpdate(); Utils.DoEvents(debuggedProcess); - List nodes = new List(); + List nodes = new List(); - 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 } } } - - watchList.EndUpdate(); } } } diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadCommands.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadCommands.cs index 1616f93b9b..7e48745708 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadCommands.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadCommands.cs @@ -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; 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 { 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 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 { 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 { 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); + } } } } diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadModel.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadModel.cs index 4b6fac8574..84fbf600ee 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadModel.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/WatchPadModel.cs @@ -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 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) diff --git a/src/AddIns/Debugger/Debugger.AddIn/TreeModel/ExpressionNode.cs b/src/AddIns/Debugger/Debugger.AddIn/TreeModel/ExpressionNode.cs index a1ee943a84..fcb53a93a1 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/TreeModel/ExpressionNode.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/TreeModel/ExpressionNode.cs @@ -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 /// Node in the tree which can be defined by a debugger expression. /// The expression will be lazily evaluated when needed. /// - public class ExpressionNode: TreeNode, ISetText, IContextMenu + public class ExpressionNode: TreeNode, ISetText, INotifyPropertyChanged { bool evaluated; @@ -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 } } + 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 if (!evaluated) EvaluateExpression(); return base.HasChildNodes; } - } + } /// Used to determine available VisualizerCommands private DebugType expressionType; @@ -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 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 // 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 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)); + } + } } } diff --git a/src/AddIns/Debugger/Debugger.AddIn/TreeModel/TreeNode.cs b/src/AddIns/Debugger/Debugger.AddIn/TreeModel/TreeNode.cs index 956410e91f..ca328cd1ae 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/TreeModel/TreeNode.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/TreeModel/TreeNode.cs @@ -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 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 get { return childNodes != null; } } + public virtual bool CanSetText { + get { return false; } + } + public virtual IEnumerable VisualizerCommands { get { return null; @@ -108,5 +113,9 @@ namespace Debugger.AddIn.TreeModel { return this.Name.CompareTo(other.Name); } + + public virtual bool SetText(string newValue) { + return false; + } } } diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs index ca0cd38af8..21551c45e3 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/TextView.cs @@ -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 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 }; RaiseEvent(args2); } + + #endregion /// diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin index 91468b0851..b6b1cbaabd 100755 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin @@ -139,12 +139,12 @@ class = "ICSharpCode.SharpDevelop.Editor.Search.SearchResultsPad" defaultPosition = "Bottom, Hidden" /> - + defaultPosition = "Bottom, Hidden" /> Src\Project\MSBuildEngine\ExtendedBinaryReader.cs + @@ -817,6 +818,7 @@ + @@ -840,6 +842,7 @@ ICSharpCode.Core False + diff --git a/src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs b/src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs index 05b3332645..6f43fd5ab3 100644 --- a/src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs +++ b/src/Main/Base/Project/Src/Bookmarks/BookmarkConverter.cs @@ -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 { 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 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 b.Append('|'); b.Append(bbm.Condition); } + return b.ToString(); } else { return base.ConvertTo(context, culture, value, destinationType); diff --git a/src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs b/src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs index 9f5321d68c..f02c28c724 100644 --- a/src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs +++ b/src/Main/Base/Project/Src/Bookmarks/BookmarkManager.cs @@ -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 BookmarkManager.AddMark(bookmarkFactory(new Location(column, line))); } + public static void RemoveAll(Predicate 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; } diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs index d499f16358..348427f5e2 100644 --- a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs +++ b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPad.cs @@ -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 } } + 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 fileNodes = new Dictionary(); + protected Grid myPanel = new Grid(); + protected ListViewPad listView = new ListViewPad(); public override object Control { get { @@ -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 AllNodes { + public IEnumerable AllItems { get { - Stack treeNodes = new Stack(); - 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 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); } - } + } } - } } diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs index 287e592a7f..b74366d598 100644 --- a/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs +++ b/src/Main/Base/Project/Src/Bookmarks/Pad/BookmarkPadToolbarCommands.cs @@ -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 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 { public override void Run() { - IEnumerable 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); } } - /// /// Deletes the currently selected or /// @@ -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); } } diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml b/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml new file mode 100644 index 0000000000..afbd655577 --- /dev/null +++ b/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs b/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs new file mode 100644 index 0000000000..727b4beb6c --- /dev/null +++ b/src/Main/Base/Project/Src/Bookmarks/Pad/Controls/ListViewPad.xaml.cs @@ -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 +{ + /// + /// ListViewPad inside WPF pads. + /// + public sealed partial class ListViewPad : UserControl + { + ObservableCollection itemCollection = new ObservableCollection(); + + public ObservableCollection 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); + } + + /// + /// Indexes from end to start. + /// + /// + 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)); + } + } + } +} \ No newline at end of file diff --git a/src/Main/Base/Project/Src/Commands/DebugCommands.cs b/src/Main/Base/Project/Src/Commands/DebugCommands.cs index e2b1020847..d15477ae76 100644 --- a/src/Main/Base/Project/Src/Commands/DebugCommands.cs +++ b/src/Main/Base/Project/Src/Commands/DebugCommands.cs @@ -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 build.Run(); } } + public class ExecuteWithoutDebugger : Execute { public override void Run() @@ -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() diff --git a/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs b/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs index 7e033aaa92..be5c665ee0 100755 --- a/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/AbstractConsolePad.cs @@ -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 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 readOnlyRegion.EndOffset = editor.Document.TextLength; } + /// + /// Hides the scroll bar. + /// + 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 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 diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs index 04616aa336..38478047b9 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/LanguageProperties.cs @@ -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 { diff --git a/src/Main/StartUp/Project/Resources/BitmapResources.resources b/src/Main/StartUp/Project/Resources/BitmapResources.resources index 8740ee3c610027ed60ab5f99d07d39640c16b656..00029d6f0b6e950fb24fb224d89b00269482a586 100644 GIT binary patch delta 11329 zcmZu%2UrwI({6fpU|DflS6G&1$w6{PKtOWN0)iyTh?2p42q-2L1AU4K6%}(r#EgjH z%!pzZ73C1qDdwzy&93-)-}m1=<4jjqSH1OCb@l9M*~cMO%M2IQ$zPX22qT2X5bfQ{ z4J|U5WjS-~I&usbQ?HihHrh~2WLT?aCckey!*Z6PWIr@CQnIIT>G%YMI@}RD3ir9u z2+6Pznm-JoMmdBQdx1O&A)~^EKxKr64n!!|0-?R&BTS5t6Rg*fL#6154?^Fx5Q@?V{C)`4 zf$_)Surd{)_#lMVP+(*v0MkV1OgKX39E8l20F*I8_h>Mvf{?5^#4SWLn#RP zr6DvJ)=hyRPk}EAbk>!|BlHCpij4rJ9Z&+wqXH391t%vJ5el({IUYjopwkM`7J-pP zF#iH{gPC*#<=+P&G#x-s1HH+he;A$(z_Bg__7-$40r(b(p38-_fsTR>1P6>JX(Qkt z@-Q+Qp%RGvEkp`9kR6~U=?E!79sB{caRToCkb9>vgwDglutbP15+Mtq(i9@`@ki*a z8AAGCCklWC0r+_UJ{4p;9TA!!k5EA}q!VO=pr$s#y0O4iU1|MSzV2cs>n4s$l&H09m>N z96H(q09f1!cU5pQNd(mj#@p4Q7$LuRA+HN`p^$*qY&WQAC^&rugl^a(qzv`o2N5Pg zH0=QRFR=F#0D9AqV+x89*5!bmuq1?fp%#WhS|}o9*%^u zQ4m!6aM%@KKnL=x2oBG~eYh*+96%`o6E;A#EkyPbDBchQjKXyiSZPRsngO8cpp!Hh z0%06O&?Uf#YUxmD1R#(FidF#STlJyy0p)!VWhoda1fxqKqK!~McOin!P-w+4_W~k{ zhB}ED0uckn{yf;z2C((Kz!p%S45@kz*REi&3*)U2$TPV1K@c&Z=M1Tcv;rR?o(Rbs z0@c944l%S)*eVwQ&_V|&I4y)egTsp$wwyblga1B&fr$V*2AH@>!H$8;35rDqQj!bl zdJaIQ0HZWGs5XN+bA;B8M5r0=Ccwf-A7INAp(o(nbOhwTNfW9YDAR)|-lRjmq4)}c zvcG`x6A*z-Dnjazuh(wS`(f|b0fmpffldHZU;<|X0Nn<;_Z$W76w>iZ2!#pyV}UI* zxG*@@|RTuxT(60`x$6@V`0o zL0Kpp@S7uVMDkR4jgGvTGBVCYn=c?7K8M^NBulE5lvqV5(VQ$CtU}m)1rYLZwKaJ) z$OMnGBie&h277^-B9x3$B*xs~&up?-Ng0-@IT8)N6P@D>1qoJ_$Tq%cfJ6c9g7gjj zDbvAP?&K1G2!7`YZZydYKAUI`R-jX${-o;^2Mb8-U=F4NK~IzH9L&abA)sqRzYYJ7 z4jU%83V8q^4WcSUNl^@HxeypkLd6Uwd?iLA3WM2nG(jSo9}mH(5G5rgIxq>LVG>Yf zN(OW$Bs}cr$QjSdAV-z-^;cv;7w|;7|Dw+a=qyAzC^HY#nvPvTyPwWsuIOyCC--9aBhP>GA9o_gff>% zjLHyPafOrvsIHr2t%^SWau06Gq*H~5hxU*cD!Q6uo=bu>K_5oz&%v?0(4Y3s3 zQ^VdP(xNIN^HY@Qu}B74l2%nAX-N@MH>6*$Pawck%*jzz3q01Ayj0bu=QztiMiz^#Ntq!_mMK=28wnRV;b$Ij zvty4y;{nnqZ*pFws_yA4g9JYR%1u9Ls)ERn^*-aLo+t69-?^D)%mD>W^$ zMomC}YQYHV8b-I(`1o-vd7)-TJD$SG0ffdRK+L6=pTWpfqOw!0K(o(dz{V`tDHhT1 zp*a~aBX%Uvl!{W?$vd$VUDJWlaPm=X$%~YhA#9U8D97v92v19mEK(O><(s5TL!F#b z=ix7RB#&>^dDNgTOu~ajWQ>LaG1Jh%Io*;4V>AS~tOvBrD9c_<7Ke(+N(~OVs==pf zA7hfQCmF-*VLsA$O58Nnh`A;YS3QGA6Y7tDFp=>Ukwh)-KzEdZiUCp~>VAPqgTF*d z&TA@A6|aAdxt_4Eb0L~^*i_!{0f7~j{7LFIQA0Pl*Cb+ zmXJDxDN<%3B5hgQXtv~(g z0*df}%q|@TvQ0-wwF@Z;xm`NO)O$6G6hts{JYuga#9R#$u4{#7X-TZD(G^i5J&L$% zipX_c9yL#28X2W0#D0bn+zxtNO2bqd6cds^8VL>cra4R+;c82;2B7p626{-EPBI#Y zZrM1=)#Ks6?S3lpAhbeA%V!5EXI=U{lBRD!nK<_^P~!Ll%f-O*a~A-pNuKMm zNs>N`^yzb`X|DZh0{ID&+$y?DISMn-p^kb;!{`F-V+JfvCghf>fJ7fKWJg;ENU0YB zSVn+<(V2wL)Vm960*w- zdDKdw)Ond9M=|%;aaDxos<9;H)nzEeUYf+x%ARN$bBL1>7k}6OHJlH_CAy^i=j>f0 z4%XHGIV+^k7_d+PX*IKzES+ksKqnaXOO6=}=nqCLcQ-avvQ5nJ(bvM(44#d7{23B=6- zq|M3~=L8XVS2bd7twiaDNZ42QLy@pCgP@kBO}{>z1%2?ct%zK*mL}5`fGU6Mnqpr zV+g-&YfUt4m8gIWmSk5l%2~Etx+|06}?To6LaL4gW>%m>GpFI zvq+IMAI?x|K4DxvT$XHihPSX9^1#JJ(G#|=v?)ifUK2FVn8l>hg+p7_OLp6TmbJQQ;DF6AZ%3tUlQs_N>OoBZW8Uv3NgCXioh->A@YCD0 z;e6cPAgRKilIGzGw0+ZmfqFljhvyvlO^q7?t*{V!SSs8P9fAE|L3y-D>8Nt$;=RWt z$_HGwjjG?Vdb5`ZYP~=|tUmC$*dB$tD_J0$T4A3*L2F zJ+;UvFAb{jD@$_bGPA3^#MGMa(uR@eDNF8naj1M5nyI!yq426w3~Vv)mPP10mPm=2 zHOLnf1T#jU>x#X}9k1`X}k`ph?m&cZ#Y9g&_ zUmLnfmquQs+}D64`fA{J28TwG;F8b(NMD*N&AZc9L{Ni=;q z++bKxjK)B?X-LlYm*=^DJe+R-OY8S?-0Acy8e@MB`Qpc=(uUKLLz0Qm*k1u>d;C&a zs{0vDV`d75ylK_hunIFi*)@i?Mk@JBH)RZyOklqIJsK;Za z&%1+Iip&dT|M?=DCoKYy56S@O%#S$f+i81&G-re^r1)+%kCgCcAO}I39Cq6 zu!x-kNy|lossAO+fjW#TAz{JZ^q-|P6!PVup`<;SjXTQ!rI`nB@M96b0yG`DML=Gm z#9k%}pCzG6>PCT7h4ApAIZ%1}^s-7C-fAxgiAZ+{A5-%s$oQdRT)U81hFamaY7#b5 zos@;b`^%p&X^+ioAR%fbKTJSAhl=o>Wk8)|ILH(D$d$XU zdI;4O7u5H=|lON$qL^DDOZ{GsBlngoj`!8l2c=E(O z+kYyu$*xE)c^tu~m+WLV(W?4)1W+InIl6C*Uy2nqX=JZAhsQMSu{uVuoORat_T^NHRetR?Pc}Fy3)yR%f0^02p zjf_cIEWE*w;^UnZ(TrCkim_bkzyMjI6>Ev#C`&{+v0PlNMM`4r=saUtIIhcLb;v3n zm-KnCv9cw36{}CrA1Vt!=^0x#aYE`3H^u<`7>yHP_drq>XM$~_$c{KCx_)%O9vv^l z{^{Vrh`O66RZou>;KvgsK9|LFap834k@s)>JLi**cwIc8hJ1{-z^8hNQGyX|_*52h zWR@vXijcfoj)&UpZvs>wnVDdL<=>Ef2^Q2@Bu5@6n9>}U9IPlv6p*f)-xmcP=ga3NCRjyUpiEW%fWXKW`g-XGu#WzxMKMr zn0Lf(;b2LZ`7%QXkCcNC2HK-FB(!(NldxnXdSj9toWQS=l?L{IQ&Jlvhx8Z;nU~0; zhvoH;n9nuSCy*D(`g&KU$sthyl+y&b{_|O{pD>x(a`2gBZK_BTi+3f-OR=H@m&n1_ z4o1kt5>w0Y#f+F(%Id3AZD{o!Oni(C!l0X*`i;OR8?4@1ovKcl&o!UUfH`$ZKyNQG z6s}DbN&=#85#uy}`dp_RawBGGdSq3a7%#j}cxGvmOiCqRCe;h*mGc52r z6EY>k3ZHWzJ2H%@**?;h|A4{{KO&QFm|B|2j)8}iPK0>_Bx+#EK1_K}Xb{u>+xr~jRLCchQkLA&KXY@O4&gGI>FfTisjr=4K_K!8DBP!X@QyD<}$7(PL==1a0 z(B2tI@HkU?)j~F$64H^DWWK4I4He2rMAwdp>9p?$Lr%PVL^WbDIM!PlT5p=Hp$vikgbD+<|Tdp?QS*VQ- zb;;#I6_wgxY0^gnlh)^3#O-&u3|g-!Z>+2S{NbI3^a=RtuW0Xy987;nQlOL&*(P@9S&#B zB`?S8vvd~ABVskTwy|kKqB&kn)imsov9F;f$*Y&z`B#4Jg1>mu_4jg*bO;?!@`6aT z((L;;6f@>p*#ruH{LwdK?uunWNyX)+83S{t7iF*W^Ex4@@kyAUX1sZcL-FP0)={

4$)Ufh_#$yx3jO*_(tAO6Q6;7so8zrPo@x%7U2 zak07jZKqJJwCen;MWfZm-%DTHJh0^--#;g)HTbn8{w;8AnNWGul~1Db7LLq1;MZ4d zM{Vq$#I1R=ZJNrB_b+?~%K2|!KEgp1-NR~-@qTuAjC<47*ImzizJGje9sb6@bKTiX zPV=&^y?pQ@-DJ40+KfuI@b!b!{B;|&9o;t^*7bD^KNZtF^Hu4%VCS!oIN!$G9jIFJ zF?3o;pO^m5*Ck)8iz5R@A65_FwB+H5a7Xv{dzG(8Ild~|BpkPw-?X|lb-Ra4gw3t+ zQSv)JZQF8x&vLgsm9x61uFiRW__9ZyzZEqrRQ2mR{;tbqyI!~J`JU(vnxwe2U|gz9 z)wVqcr``UVH{(Iw?&pWoOH0r0+rsW0s=o6|%CHYF-5uAi$uDmC?mXk#>HL50%xtz? zV{+cw>gax1|EgI6&Ir%dtLJZX8op6K({aI(sGF|0=QmDzR%+ateoz{HEopR7vQ zTeel%anj*oBR2T?E!LbiUhsCNvvtYwNvU?B0XM83e&lZY=CitK^PD%w!#$^PYL=SU z4IOVZtH)$aUak)R^`+3nl+E{tEWDRJy>{~M(jK#`PD8z(E4OCnO*~!q^4SG(iBpa4 zs9S%;jXQq#)1AFuRb4%4GrpH?%Kv&*=1ge!%O&%KHkv*s#nb8OGp7f&nz|p-^6q=? zFQ**+V2$#f2UU}u9b(VTIXGSWV*I+Av24SV*QMD3*?+c&_HK%;?9A=xLy$2HEX7s$%&BA1)hYidMcp!_|7?wWC>q6W(9C(`i)_?D=EQ>jjfP4eaPJ z`P|KMI$^W&E7@9mVnAE`k=ETwcU!&Hy0+Rkg~oMQCL0C4tN4g3p5FPe=If6iYm(nr zx)eqKvu0m$?`ubs8^Noa>!uzr-81WbR!>#Beog^ho1D~GdwhWQR(H`x^IKLqXBSj8 z)~s6T@ZiOt-{r`mUDu*s1P3lx=PzCrDO>0-^sw{uyx$q@)_CdNyXIw1|GfDtYRz@C zsa8c-E-pRPJ@eqo#>UKyN9u70KEAqD#Orn!-QKh-(JAZt#kQpj&-a$z-S_?c(x%dd z8KKR$ZcHv6ap{D7?Tv9JAxeK|`-QqT71~95cAxBd<}@YGKC-#i{#*A}ZwtZ2gV%1n z8`~CHkrQ=l>Wr_C}8L&F^Nps?;Vh5c` zRrOho^)7y%8SggSUiau$x%Qm|^@XyN)Z6@;t5du+Qv12G@yXo7&3BioJ-sem zF~e3*@ZqFNv664*{CQnJTV5IWVA=G=mY=??zt%xKIHjf3 zqU#B>AGVn;%-oRbvuj5EI)wp>+ma4O=gI}g_w>Ea7Eg&0qF!XKEpsfSTM4AfTyRVNt z@&37y;Mq8<=)#rAR%mc<_l+H_u14C@p%kU%+^*|rIC;Qi+2x+@)LRJ`qN9$FNUU7$ zp>A+MVcA*skOOqz!7XNPb1Ap$dM|3c77ZP2Rrk_Ep`c>7RsGiOD@T+Uordp*qNEhoyt;~$1^wV-)#OlfT?OM{{ISk zr?jAFl5u_!$->hv{-b@g-&%dXGJB4e&T*TG;hy4+dx9hGJX%%1yyohd$}QPDJq}&0 z*gPt+XvBu4Th^xJZtU1nWHZnvddrgf1h)IvMOG(2e^{N`w#8dcgDcne@1MSH>mzf%Se8b0bcRL^-xF3pKGdjWly1|jA1%{9c>6h)@aJx@Hw{Xa z=Uy-V{Ka?qnA^QAyMrfOm>O0Wc4x^sdg>9*gmhEcb?Yw=7FCASf=SoDJ-DhgKO-~QbcmY8p0*S{Gv)UV`cqDvxNOw5zIJ2q?PGlxuicC)EqJ=P zBTIPW@6?Cq^n(&^q&|F_?$9K1zT|g$tp|6WUj^4(Wyd;Q{b$Bn^+mJzg9U%J^(2ib z9jIw?&N43b`(o%R$32oCy@{sJd+lDSZ0XXtJlI^x zzHR+6hx5k^RQ};@I~-H4uUGN>SisBDbz|>ZRW@~-ZnxQ)p3!yU?2hfn{_gFScbb#t zq4X@8jhHuy&ch;}N$$!J%Hx;uM zl$DJbJUV}4Ty4=Y$CoMPd9F);l$fZNXO>>+d>I*bMW;vY$-4KnX$~%>9?I?A6mjsM zi8bK~R7cJ3$84t=>1SrApOJwJ?@vENu^Ko9@NZTNWZra6Sx_@*k-Xae1(R9Fmi~_v kzNpNa_CHdMg|yJ@zooO|j?i$)!X*b6dw<*!`Fhv?10%QJHvj+t delta 8149 zcmZ8l33yah(yiRrx6^4lO{ddznog(F+4qf*1p*`?BoNjl5CQ~35=aP3_OJ+IU=R>R z1WI9KL_lX4^+N?27k*J-1XmDoK~z8)8Qgvq6j70ZIq!8Eao~Gjzq+?>)u~f;>%QE3 z{~W*Um$>yi0^ao_5=7L*8@Bb?bHGpVVbQgBkaEA@-uHEb{Px=Pheh}5sYL%SAbJPC zf0;-+1eo8B%a>g^$#6-{ItPP7-s zufpL&^+YYBh(ZBqO(jvVo9N>*qJjXT{9u4eAiAi7K|7Hng=ldI(GEP>aJC*`k{!?k zfP^5T5AZ~16Wu$6=n6m_j>UWi(GtIIqI<>?Wmt&%lo0)_8k&?u7A0 z!-#feVh)jQ1BeoTqIf4!djnBrDN!Px7i)+XVr&-xmJK4h0A}7#1Uq#^Q(!9wYt|yb z582Pe%$wP~2^P4q7qe-Dwagpo%uPgz7(P;Kc& zbU(nZht56FJ%;yOIL$&pdN4N>fL}z^o^s)%SG*4+-4rXfAkVf*rM24Io zih80iPz(wjRT)4bXg)m@DF7n}0Y*$lwS&TNj2%F9!7y|YDLI5#r#Gvmji>Z zVEn`sqGw_EokF4p*l5N3M*y-7>nr?V1O7&30|3@`e}|VOIJvto5W@JsTqr{1_Iu=X zdnAeol-`k#N;bklFQTt9iQ-TTQxIVXqWKp9pMpU@6j+rGRWDG8Sl10Z_0x%dMIAh& zpg;j;BG&aspVop#4ke zu0n)QAPP4eKLsXcOn`CF`!mqLitTp7!9aiHwKp7|!Ef0Rma0bp$ad zhG;C((3p;%G87#(4oriA1EEOM4s4OLK(r$V#TJfg1-+#LTde?2@h<=ouL0^gU}Azo z^b+RApzwl`l4VHObpTllN<-k_ugRE8LB1=Aj^lSQf@)IPN+S9V&WB*lYuGL8P>|UO zLN*}(AENN?1ZAf{`3H!ixSl8t`O+1j*N+5JP>b4p9Vz5E94&oiQ5cY~@!)%%dx=!cAMvh#H z3h`-MMCkAyO*_}x^rB@Xbi#SH%^^Pq_wkz5$UZhXx*UXfJ@$!}P2jK0C-J->yI5Vt zNBhKt{{=iaiYSUwsf4_4)wfoJ)J#paY_Uffbd5NIpu>B*!o;g{d5S$kJlVlZ?R{na zZAAUpFT~E{YF#4Yc0O)T5vi;Ax;;ZE_i{!^guKBxsx_775WBp0iyDl&pv-9&t&i|i zAzAX-T|SlF3+$p}FRb+CG>1(-@dDBfZ5v-NG6>^AZgj+nm9Ox9jxcfV4SvcIW4v}8 z4ZetyC`p5tbCRz)qQvYo9MLyaS#qAZ&goRa$-FOACxv|-yuQ{Z=UyU8*Q8@J9CE=g zh)|UReW7o=fumcSS5c4C`%$bWsi=Pme)%%qtZYPmUVJt1f)ZwPmCMtHo^^1fzgW4MkN zhg-$+lUS1?GEQ-ML@1vMcPS5lB)C1&X({YsWFb|8kMK`8!jmM{oyJcn&-Pg4(z61| zi-?Fd6;dNmG(i9Sr@Y&fC02fpp9HoM>t3aUcI zw*Yc0EhOg;s?Bnblg~!j<%>TG8rvfoIV>_!X}u!2w$K?^M8l|p#?crm{Z&O9ukdez z%L<(QT%=8&x-L-O8^RsEi{P!L2iq!A)U|AhGAdvADZG5V`mW==D7W&hPT@W9s>+L_ z>`J4*!Ua9^d!jt@M1Z1E=+HC>7#H=hVq|d%nC<% z&8Eeg_;`#_`8XPKzLOyb7ip>Q(ny?-aQ_|a)3wXr5)=@q0!)jw^P*UflAPjOY3Z$& zxmqV(u<&iF7i?Org|EjNmG1PLdXV)23$*lF`gv(nwOZn=%7IL8SX<*P%Jdwsg{^T0 zeiw6@d5V@0RSt+ZDT^<8arKM0i?GXTXu-o^v=dER1<*#9e^RjhRj}*h4a$aJG(G}< z-UJ(n&oZ%napq z2^R5C0B=vokawGOYS+PniwSm7Y~hUL9A2MjFJ*XVzDYESX!}jY z+$6JjBZLbFh4R=mm$r6Il1bF`{ln0yB$NEbsiPA3>aQvp)qUNDkY8}Y)HpfCt)ofW z0_P&gEli4w0V1>w5sZ(_P~4saiPhbc=C3$XX1#My0b~o;M^6 zo79at6Uk|!-!g6n7Ls8Xn=?5rqfWT8`1@S1`WqRsVt+R18YSv;HM{fsIfP*#Mh5Wf z{jBokJRJ>Fqq0uaGP97>x}6E9ErWSnK`0kw+C+3dQWX|70o!`?&F-~xsE*smq3>mS z#2Y10ND>tzd3$~+MhtA}ZD6Q> zimlT$liPD#d??!?tkXeJ7F%*0;+fiw1M_)yj#DhH2SfRMIL9r2n4zNzEFQ#BxpuLx zK~-6t>lCH4ko8dBo)gU<*lxj1Lz5@esO7t@1A=1ga2kT5~-WK8Mpr4mxONFX~A&p3=`n^(zl9`S7 z7Fv0ynwX%$E?$K9;<^3D~u(EeCsclJZVEs0!3GLD6<3rras0aU`%g%hGGUFkg)-`%OTh!+FdniwA zDyP(k^rXFk6Z`IqV@;NV~;|kGso>$uzFD}H{w9o5#N1;cy z?^k=9+7r(fnv|@Ub$lO=asQ!KarL0KZL){jl(+xswKHp|Sy^+$tFm#ZRZe|PB~e{G zxX2PXRHJ_`Eqp`QbCh9}^+itQ`cW?}gNxkCf_J>{i}0TRzL&ziMNVP=P}_1}7r8{h z$J%SuFqc?#h6{&<%U?hBIkJ@Kc=<4!yyM)hBhL-9DYc(_qf#}#8Rk+>U+_9o<@jQ! zjQLteLo~4J$c*AhrSn^z_Y8)-v)CiHf3G!iOylHIIaH604r>2F#}Os2-ffV*W!FhJ zepJWe<@%qs0vzGwrV@*s{;N;gTw+l^{mmQQ;S#6v$aNi`D~T6B5+527&WXbvO14gV zzZOR6@P~j}V=w60JR-qVgi}S`7@c%Cj+5a7L~0IbP%n|F{+&0c^T3ft(VVHxSVo&~iK8WlmyK6-th{TaML9pv zXW3@(?z`hde5-IA`?g%_P|53YhFV71c-knJ$Sn3L-E#O27||1#^?x>7<0!r~Dqp-d z76FAb@bL7}CUK+uCXy|qEh4k>=Ilq9T{2mX#afQ7r+zp1(*0Gn7UIFNIH8S= zujRrqDdI%EmL1IUePgWRmzh8r%3jgLZ;vsFflYv-4!I5WsGt@KnRm-TGY;&DEnG9U zSU%7uQKEHYv-#{;gLuE=rdBI9^&ASG53K=a64}53O!+#%a-BJypr_3cDUZz1`TW0tlo#QJIagw;PQd8Ym=2Ft`@+QMm zVP`|RQ=DD{A~S;2Gj^WVI$LPdJrXT)PkA;!RBjR1*78&3m2%%Yi6d=Kc?D0YFv^zo z5(nX)@>JejVU>X!ebVU)t7v4tSTRN%yI+f1_0u-qEIKy94|?WiEzRoa#qma2^`JzH zQSCr7b>fQ_f59W_C$}JqJ|#mIel2k-ZAm`)Ot)HfQrrOB6t1YrERF6Mr)zxRJJ;ENrH>zXgy>WUqC=3=( zbtp?S^t@w=lNU_2i=l&f-P9!6zr?rd{s@p5_oEC&CrHPBSZKYrQKGkNB!d z8{Rq1EIK>YSIZv?yu1OOHRO%NnCOrN$s$J;gaS2{Pdmbuh2V$=x+p zp*zQ1lO~Mk`EX5|^5!KyU#Ur!y?#=4x~DsNiNh+-|E#A-NUi|yM~w47dR{s`S)>ZS zeR>$b++~rC{{FbxQ5Q7Z&9YaZKMwfr=?pa>m$IdW+ zP^L=iEytQD)eIz~@0Ozme<{}ukj^xJ++?U~>h(r`7Odq9<6z81v3j>rIMioUz1tW& z+#i<(%j?|Q-NuOL6CkUt$%X$+d_(8AEY$+-=s@~vb3 z=tFr8(fmY%ORRr~UvG#LZ@tHt8j?iLhwN^QlV{HRqlhCKZCul6S59B@=Y@^w%C?{U z`H99@F;d}o8xur|KmVsONxWjiPhT#YWfi|VxN26Kc+|yr&B_pOCGd;062x6Od|_6c zcxnLmZi*1Q264Zp46!$#8=7LooFd-S6k=}Dc6J@U7CWhEIEJFcM-%vDQ-bK4#D250 zsMfgV2=NW{vfxn%dDQ7ep&?_&_PULZO z95Qu|0Y{8iGBMO-$vk!8#o2B?HpebITU5hd$!sYDs#csl4ce#ZyX}0jIRa|tKI41( zzVC=U+vQvKR;xL<3Q6w3Ij5d=v&esufktR1kIYRJ6PEC$xx?krr3M5MFSU#pE4N}ig3q?ZYHq&Yt_HuYHJNML4dUFR{7~y) zL4W5@T2sWAPw>-iQJm7|5-;rGQEgfBy%!89xwEYvp4MRysRuBhFY1o)#kN9u;kW@E zYHoYHX6fijZfYMOw|!*59y-zP-q>ak@n`t$_B^@jyc*ewb{Ds_S;gjWct}T_D7b{V za9-8nl7GFTQmM`dx4Y%H6o3FCI-}XxiR$uacW1GfVdRF+@Z7fo1IRHRTdDsr*h?oKUj(*RF7RATI!wdTG8(>r}n+ z1Hg+asrRw|r2*humDEo4*0=!mJe=?DvASX+Z&(n{>Q(HqsR7u2sv>%o44>&UdGAb@ zXl{X8mOS6(v#hqOIg10(B`(c(s{33Q^``*h4ZF7PePv-y>gHoh{2iMM-j&sRUw^`` z-<$rA2GX7e(S)IGm#jc)%YReT=esyloW^7-^_GC0L2 X>Q>J?D)H#?_~S7=KksP3j{N@uW6{*!