14 changed files with 1386 additions and 434 deletions
After Width: | Height: | Size: 3.9 KiB |
@ -1,426 +1,451 @@ |
|||||||
<?xml version="1.0" encoding="utf-8"?> |
<?xml version="1.0" encoding="utf-8"?> |
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> |
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> |
||||||
<PropertyGroup> |
<PropertyGroup> |
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> |
||||||
<ProductVersion>9.0.30729</ProductVersion> |
<ProductVersion>9.0.30729</ProductVersion> |
||||||
<SchemaVersion>2.0</SchemaVersion> |
<SchemaVersion>2.0</SchemaVersion> |
||||||
<ProjectGuid>{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}</ProjectGuid> |
<ProjectGuid>{EC06F96A-AEEC-49D6-B03D-AB87C6EB674C}</ProjectGuid> |
||||||
<OutputType>Library</OutputType> |
<OutputType>Library</OutputType> |
||||||
<RootNamespace>Debugger.AddIn</RootNamespace> |
<RootNamespace>Debugger.AddIn</RootNamespace> |
||||||
<AssemblyName>Debugger.AddIn</AssemblyName> |
<AssemblyName>Debugger.AddIn</AssemblyName> |
||||||
<WarningLevel>4</WarningLevel> |
<WarningLevel>4</WarningLevel> |
||||||
<AllowUnsafeBlocks>False</AllowUnsafeBlocks> |
<AllowUnsafeBlocks>False</AllowUnsafeBlocks> |
||||||
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> |
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow> |
||||||
<NoStdLib>False</NoStdLib> |
<NoStdLib>False</NoStdLib> |
||||||
<RegisterForComInterop>False</RegisterForComInterop> |
<RegisterForComInterop>False</RegisterForComInterop> |
||||||
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies> |
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies> |
||||||
<BaseAddress>116916224</BaseAddress> |
<BaseAddress>116916224</BaseAddress> |
||||||
<PlatformTarget>AnyCPU</PlatformTarget> |
<PlatformTarget>AnyCPU</PlatformTarget> |
||||||
<FileAlignment>4096</FileAlignment> |
<FileAlignment>4096</FileAlignment> |
||||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
<TreatWarningsAsErrors>false</TreatWarningsAsErrors> |
||||||
<RunPostBuildEvent>Always</RunPostBuildEvent> |
<RunPostBuildEvent>Always</RunPostBuildEvent> |
||||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> |
||||||
<SourceAnalysisOverrideSettingsFile>"C:\Program Files\SharpDevelop\3.0\bin\..\AddIns\AddIns\Misc\SourceAnalysis\Settings.SourceAnalysis"</SourceAnalysisOverrideSettingsFile> |
<SourceAnalysisOverrideSettingsFile>"C:\Program Files\SharpDevelop\3.0\bin\..\AddIns\AddIns\Misc\SourceAnalysis\Settings.SourceAnalysis"</SourceAnalysisOverrideSettingsFile> |
||||||
<SourceAnalysisOverrideSettingsFile>C:\Dokumente und Einstellungen\HP\Anwendungsdaten\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile> |
<SourceAnalysisOverrideSettingsFile>C:\Dokumente und Einstellungen\HP\Anwendungsdaten\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile> |
||||||
<PublishUrl>http://localhost/Debugger.AddIn/</PublishUrl> |
<PublishUrl>http://localhost/Debugger.AddIn/</PublishUrl> |
||||||
<Install>true</Install> |
<Install>true</Install> |
||||||
<InstallFrom>Web</InstallFrom> |
<InstallFrom>Web</InstallFrom> |
||||||
<UpdateEnabled>true</UpdateEnabled> |
<UpdateEnabled>true</UpdateEnabled> |
||||||
<UpdateMode>Foreground</UpdateMode> |
<UpdateMode>Foreground</UpdateMode> |
||||||
<UpdateInterval>7</UpdateInterval> |
<UpdateInterval>7</UpdateInterval> |
||||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits> |
<UpdateIntervalUnits>Days</UpdateIntervalUnits> |
||||||
<UpdatePeriodically>false</UpdatePeriodically> |
<UpdatePeriodically>false</UpdatePeriodically> |
||||||
<UpdateRequired>false</UpdateRequired> |
<UpdateRequired>false</UpdateRequired> |
||||||
<MapFileExtensions>true</MapFileExtensions> |
<MapFileExtensions>true</MapFileExtensions> |
||||||
<ApplicationRevision>0</ApplicationRevision> |
<ApplicationRevision>0</ApplicationRevision> |
||||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion> |
<ApplicationVersion>1.0.0.%2a</ApplicationVersion> |
||||||
<IsWebBootstrapper>true</IsWebBootstrapper> |
<IsWebBootstrapper>true</IsWebBootstrapper> |
||||||
<UseApplicationTrust>false</UseApplicationTrust> |
<UseApplicationTrust>false</UseApplicationTrust> |
||||||
<BootstrapperEnabled>true</BootstrapperEnabled> |
<BootstrapperEnabled>true</BootstrapperEnabled> |
||||||
<OutputPath>..\..\..\..\AddIns\Debugger\</OutputPath> |
<OutputPath>..\..\..\..\AddIns\Debugger\</OutputPath> |
||||||
<TargetFrameworkProfile> |
<TargetFrameworkProfile> |
||||||
</TargetFrameworkProfile> |
</TargetFrameworkProfile> |
||||||
</PropertyGroup> |
</PropertyGroup> |
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
||||||
<DebugSymbols>true</DebugSymbols> |
<DebugSymbols>true</DebugSymbols> |
||||||
<DebugType>Full</DebugType> |
<DebugType>Full</DebugType> |
||||||
<Optimize>false</Optimize> |
<Optimize>false</Optimize> |
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants> |
<DefineConstants>DEBUG;TRACE</DefineConstants> |
||||||
</PropertyGroup> |
</PropertyGroup> |
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
||||||
<DebugType>pdbonly</DebugType> |
<DebugType>pdbonly</DebugType> |
||||||
<Optimize>true</Optimize> |
<Optimize>true</Optimize> |
||||||
<DefineConstants>TRACE</DefineConstants> |
<DefineConstants>TRACE</DefineConstants> |
||||||
</PropertyGroup> |
</PropertyGroup> |
||||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> |
||||||
<StartAction>Program</StartAction> |
<StartAction>Program</StartAction> |
||||||
<StartProgram>..\..\..\..\bin\SharpDevelop.exe</StartProgram> |
<StartProgram>..\..\..\..\bin\SharpDevelop.exe</StartProgram> |
||||||
</PropertyGroup> |
</PropertyGroup> |
||||||
<ItemGroup> |
<ItemGroup> |
||||||
<Reference Include="Microsoft.CSharp" /> |
<Reference Include="GraphSharp"> |
||||||
<Reference Include="PresentationCore"> |
<HintPath>..\..\..\Libraries\GraphSharp\GraphSharp.dll</HintPath> |
||||||
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
</Reference> |
||||||
</Reference> |
<Reference Include="GraphSharp.Controls"> |
||||||
<Reference Include="PresentationFramework"> |
<HintPath>..\..\..\Libraries\GraphSharp\GraphSharp.Controls.dll</HintPath> |
||||||
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
</Reference> |
||||||
</Reference> |
<Reference Include="Microsoft.Contracts"> |
||||||
<Reference Include="PresentationFramework.Aero"> |
<HintPath>..\..\..\Libraries\GraphSharp\Microsoft.Contracts.dll</HintPath> |
||||||
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
</Reference> |
||||||
</Reference> |
<Reference Include="Microsoft.CSharp" /> |
||||||
<Reference Include="System" /> |
<Reference Include="PresentationCore"> |
||||||
<Reference Include="System.Core"> |
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
</Reference> |
||||||
</Reference> |
<Reference Include="PresentationFramework"> |
||||||
<Reference Include="System.Data" /> |
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
<Reference Include="System.Drawing" /> |
</Reference> |
||||||
<Reference Include="System.Windows.Forms" /> |
<Reference Include="PresentationFramework.Aero"> |
||||||
<Reference Include="System.Xml" /> |
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
<Reference Include="System.Xaml" /> |
</Reference> |
||||||
<Reference Include="WindowsBase"> |
<Reference Include="QuickGraph"> |
||||||
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
<HintPath>..\..\..\Libraries\GraphSharp\QuickGraph.dll</HintPath> |
||||||
</Reference> |
</Reference> |
||||||
<Reference Include="WindowsFormsIntegration"> |
<Reference Include="System" /> |
||||||
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
<Reference Include="System.Core"> |
||||||
</Reference> |
<RequiredTargetFramework>3.5</RequiredTargetFramework> |
||||||
<Reference Include="WindowsFormsIntegration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> |
</Reference> |
||||||
<RequiredTargetFramework>4.0</RequiredTargetFramework> |
<Reference Include="System.Data" /> |
||||||
</Reference> |
<Reference Include="System.Drawing" /> |
||||||
</ItemGroup> |
<Reference Include="System.Windows.Forms" /> |
||||||
<ItemGroup> |
<Reference Include="System.Xml" /> |
||||||
<Compile Include="Pads\CallStackPad.xaml.cs"> |
<Reference Include="System.Xaml" /> |
||||||
<DependentUpon>CallStackPad.xaml</DependentUpon> |
<Reference Include="WindowsBase"> |
||||||
<SubType>Code</SubType> |
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
</Compile> |
</Reference> |
||||||
<Compile Include="Pads\Controls\ConditionCell.xaml.cs"> |
<Reference Include="WindowsFormsIntegration"> |
||||||
<DependentUpon>ConditionCell.xaml</DependentUpon> |
<RequiredTargetFramework>3.0</RequiredTargetFramework> |
||||||
</Compile> |
</Reference> |
||||||
<Compile Include="Pads\Controls\Converters.cs" /> |
<Reference Include="WindowsFormsIntegration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> |
||||||
<Compile Include="Pads\Controls\SimpleListViewControl.xaml.cs"> |
<RequiredTargetFramework>4.0</RequiredTargetFramework> |
||||||
<DependentUpon>SimpleListViewControl.xaml</DependentUpon> |
</Reference> |
||||||
<SubType>Code</SubType> |
</ItemGroup> |
||||||
</Compile> |
<ItemGroup> |
||||||
<Compile Include="Pads\Controls\TreeListView.cs" /> |
<Compile Include="Pads\CallStackPad.xaml.cs"> |
||||||
<Compile Include="Pads\Controls\WatchList.xaml.cs"> |
<DependentUpon>CallStackPad.xaml</DependentUpon> |
||||||
<DependentUpon>WatchList.xaml</DependentUpon> |
<SubType>Code</SubType> |
||||||
</Compile> |
</Compile> |
||||||
<Compile Include="Pads\WatchInputBox.xaml.cs"> |
<Compile Include="Pads\Controls\ConditionCell.xaml.cs"> |
||||||
<DependentUpon>WatchInputBox.xaml</DependentUpon> |
<DependentUpon>ConditionCell.xaml</DependentUpon> |
||||||
<SubType>Code</SubType> |
</Compile> |
||||||
</Compile> |
<Compile Include="Pads\Controls\Converters.cs" /> |
||||||
<Compile Include="Properties\AssemblyInfo.cs" /> |
<Compile Include="Pads\Controls\SimpleListViewControl.xaml.cs"> |
||||||
<Compile Include="BreakpointChangeMenuBuilder.cs" /> |
<DependentUpon>SimpleListViewControl.xaml</DependentUpon> |
||||||
<Compile Include="DisableBreakpointMenuCommand.cs" /> |
<SubType>Code</SubType> |
||||||
<Compile Include="EnableBreakpointMenuCommand.cs" /> |
</Compile> |
||||||
<Compile Include="IsActiveBreakpointCondition.cs" /> |
<Compile Include="Pads\Controls\TreeListView.cs" /> |
||||||
<Compile Include="IsBreakpointCondition.cs" /> |
<Compile Include="Pads\Controls\WatchList.xaml.cs"> |
||||||
<Compile Include="Options\DebuggingOptions.cs" /> |
<DependentUpon>WatchList.xaml</DependentUpon> |
||||||
<Compile Include="Options\DebuggingOptionsPanel.cs"> |
</Compile> |
||||||
<SubType>UserControl</SubType> |
<Compile Include="Pads\ParallelPad\DrawSurface.xaml.cs"> |
||||||
</Compile> |
<DependentUpon>DrawSurface.xaml</DependentUpon> |
||||||
<Compile Include="Options\DebuggingOptionsPanel.Designer.cs"> |
<SubType>Code</SubType> |
||||||
<DependentUpon>DebuggingOptionsPanel.cs</DependentUpon> |
</Compile> |
||||||
</Compile> |
<Compile Include="Pads\ParallelPad\ParallelStackPad.cs" /> |
||||||
<Compile Include="Options\DebuggingSymbolsPanel.cs"> |
<Compile Include="Pads\ParallelPad\ParallelStacksGraph.cs" /> |
||||||
<SubType>UserControl</SubType> |
<Compile Include="Pads\ParallelPad\ThreadStack.xaml.cs"> |
||||||
</Compile> |
<DependentUpon>ThreadStack.xaml</DependentUpon> |
||||||
<Compile Include="Options\DebuggingSymbolsPanel.Designer.cs"> |
<SubType>Code</SubType> |
||||||
<DependentUpon>DebuggingSymbolsPanel.cs</DependentUpon> |
</Compile> |
||||||
</Compile> |
<Compile Include="Pads\WatchInputBox.xaml.cs"> |
||||||
<Compile Include="Pads\ObjectGraphPad.cs" /> |
<DependentUpon>WatchInputBox.xaml</DependentUpon> |
||||||
<Compile Include="Pads\SelectLanguageCommand.cs" /> |
<SubType>Code</SubType> |
||||||
<Compile Include="Pads\WatchPadCommands.cs" /> |
</Compile> |
||||||
<Compile Include="Pads\BreakPointsPad.cs" /> |
<Compile Include="Properties\AssemblyInfo.cs" /> |
||||||
<Compile Include="Pads\ConsolePad.cs"> |
<Compile Include="BreakpointChangeMenuBuilder.cs" /> |
||||||
<SubType>UserControl</SubType> |
<Compile Include="DisableBreakpointMenuCommand.cs" /> |
||||||
</Compile> |
<Compile Include="EnableBreakpointMenuCommand.cs" /> |
||||||
<Compile Include="Pads\LoadedModulesPad.cs" /> |
<Compile Include="IsActiveBreakpointCondition.cs" /> |
||||||
<Compile Include="Pads\LocalVarPad.cs" /> |
<Compile Include="IsBreakpointCondition.cs" /> |
||||||
<Compile Include="Pads\RunningThreadsPad.cs" /> |
<Compile Include="Options\DebuggingOptions.cs" /> |
||||||
<Compile Include="Pads\WatchPad.cs"> |
<Compile Include="Options\DebuggingOptionsPanel.cs"> |
||||||
<SubType>Component</SubType> |
<SubType>UserControl</SubType> |
||||||
</Compile> |
</Compile> |
||||||
<Compile Include="Pads\WatchPadModel.cs" /> |
<Compile Include="Options\DebuggingOptionsPanel.Designer.cs"> |
||||||
<Compile Include="Service\AttachToProcessForm.cs"> |
<DependentUpon>DebuggingOptionsPanel.cs</DependentUpon> |
||||||
<SubType>Form</SubType> |
</Compile> |
||||||
</Compile> |
<Compile Include="Options\DebuggingSymbolsPanel.cs"> |
||||||
<Compile Include="Service\DebuggeeExceptionForm.cs"> |
<SubType>UserControl</SubType> |
||||||
<SubType>Form</SubType> |
</Compile> |
||||||
</Compile> |
<Compile Include="Options\DebuggingSymbolsPanel.Designer.cs"> |
||||||
<Compile Include="Service\DebuggeeExceptionForm.Designer.cs"> |
<DependentUpon>DebuggingSymbolsPanel.cs</DependentUpon> |
||||||
<DependentUpon>DebuggeeExceptionForm.cs</DependentUpon> |
</Compile> |
||||||
</Compile> |
<Compile Include="Pads\ObjectGraphPad.cs" /> |
||||||
<Compile Include="Service\DebuggerEventForm.cs"> |
<Compile Include="Pads\SelectLanguageCommand.cs" /> |
||||||
<SubType>Form</SubType> |
<Compile Include="Pads\WatchPadCommands.cs" /> |
||||||
</Compile> |
<Compile Include="Pads\BreakPointsPad.cs" /> |
||||||
<Compile Include="Service\DebuggerEventForm.Designer.cs"> |
<Compile Include="Pads\ConsolePad.cs"> |
||||||
<DependentUpon>DebuggerEventForm.cs</DependentUpon> |
<SubType>UserControl</SubType> |
||||||
</Compile> |
</Compile> |
||||||
<Compile Include="Service\EditBreakpointScriptWindow.xaml.cs"> |
<Compile Include="Pads\LoadedModulesPad.cs" /> |
||||||
<DependentUpon>EditBreakpointScriptWindow.xaml</DependentUpon> |
<Compile Include="Pads\LocalVarPad.cs" /> |
||||||
<SubType>Code</SubType> |
<Compile Include="Pads\RunningThreadsPad.cs" /> |
||||||
</Compile> |
<Compile Include="Pads\WatchPad.cs"> |
||||||
<Compile Include="TreeModel\DebuggerResourceService.cs" /> |
<SubType>Component</SubType> |
||||||
<Compile Include="Visualizers\Commands\ExpressionVisualizerCommand.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Commands\GridVisualizerCommand.cs" /> |
<Compile Include="Pads\WatchPadModel.cs" /> |
||||||
<Compile Include="Visualizers\Commands\IVisualizerDescriptor.cs" /> |
<Compile Include="Service\AttachToProcessForm.cs"> |
||||||
<Compile Include="Visualizers\Commands\ObjectGraphVisualizerCommand.cs" /> |
<SubType>Form</SubType> |
||||||
<Compile Include="Visualizers\Commands\GridVisualizerMenuCommand.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Commands\ObjectGraphVisualizerMenuCommand.cs" /> |
<Compile Include="Service\DebuggeeExceptionForm.cs"> |
||||||
<Compile Include="Visualizers\Commands\TextVisualizerCommand.cs" /> |
<SubType>Form</SubType> |
||||||
<Compile Include="Visualizers\Commands\VisualizerDescriptors.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Commands\XmlVisualizerCommand.cs" /> |
<Compile Include="Service\DebuggeeExceptionForm.Designer.cs"> |
||||||
<Compile Include="Visualizers\Common\DebuggerVisualizerException.cs" /> |
<DependentUpon>DebuggeeExceptionForm.cs</DependentUpon> |
||||||
<Compile Include="Visualizers\Common\IEvaluate.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Common\IListValuesProvider.cs" /> |
<Compile Include="Service\DebuggerEventForm.cs"> |
||||||
<Compile Include="Visualizers\Common\ObjectPropertyComparer.cs" /> |
<SubType>Form</SubType> |
||||||
<Compile Include="Visualizers\Common\VirtualizingCollection.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Common\VirtualizingObservableCollection.cs" /> |
<Compile Include="Service\DebuggerEventForm.Designer.cs"> |
||||||
<Compile Include="Visualizers\Controls\DragScrollViewer.cs" /> |
<DependentUpon>DebuggerEventForm.cs</DependentUpon> |
||||||
<Compile Include="Visualizers\Graph\Drawing\PositionedGraphNodeControl.xaml.cs"> |
</Compile> |
||||||
<DependentUpon>PositionedGraphNodeControl.xaml</DependentUpon> |
<Compile Include="Service\EditBreakpointScriptWindow.xaml.cs"> |
||||||
<SubType>Code</SubType> |
<DependentUpon>EditBreakpointScriptWindow.xaml</DependentUpon> |
||||||
</Compile> |
<SubType>Code</SubType> |
||||||
<Compile Include="Visualizers\Graph\Expanded.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Graph\ExpandedContentNodes.cs" /> |
<Compile Include="TreeModel\DebuggerResourceService.cs" /> |
||||||
<Compile Include="Visualizers\Graph\ExpandedExpressions.cs" /> |
<Compile Include="Visualizers\Commands\ExpressionVisualizerCommand.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\ContentNodeEventArgs.cs" /> |
<Compile Include="Visualizers\Commands\GridVisualizerCommand.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\ContentPropertyNode.cs" /> |
<Compile Include="Visualizers\Commands\IVisualizerDescriptor.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\ContentNode.cs" /> |
<Compile Include="Visualizers\Commands\ObjectGraphVisualizerCommand.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\GraphEdgeRouter.cs" /> |
<Compile Include="Visualizers\Commands\GridVisualizerMenuCommand.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Box.cs" /> |
<Compile Include="Visualizers\Commands\ObjectGraphVisualizerMenuCommand.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Edge.cs" /> |
<Compile Include="Visualizers\Commands\TextVisualizerCommand.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\EdgeRouter.cs" /> |
<Compile Include="Visualizers\Commands\VisualizerDescriptors.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\GeomUtils.cs" /> |
<Compile Include="Visualizers\Commands\XmlVisualizerCommand.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IEdge.cs" /> |
<Compile Include="Visualizers\Common\DebuggerVisualizerException.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IPoint.cs" /> |
<Compile Include="Visualizers\Common\IEvaluate.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IRect.cs" /> |
<Compile Include="Visualizers\Common\IListValuesProvider.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Point2D.cs" /> |
<Compile Include="Visualizers\Common\ObjectPropertyComparer.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\EdgeStartEnd.cs" /> |
<Compile Include="Visualizers\Common\VirtualizingCollection.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RoutedEdge.cs" /> |
<Compile Include="Visualizers\Common\VirtualizingObservableCollection.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteGraph.cs" /> |
<Compile Include="Visualizers\Controls\DragScrollViewer.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteGraphEdge.cs" /> |
<Compile Include="Visualizers\Graph\Drawing\PositionedGraphNodeControl.xaml.cs"> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteVertex.cs" /> |
<DependentUpon>PositionedGraphNodeControl.xaml</DependentUpon> |
||||||
<Compile Include="Visualizers\Graph\Layout\SplineRouting\ShortestPath\AStarShortestPathFinder.cs" /> |
<SubType>Code</SubType> |
||||||
<Compile Include="Visualizers\Graph\NodeControlCache.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Graph\ObjectGraphControl.xaml.cs"> |
<Compile Include="Visualizers\Graph\Expanded.cs" /> |
||||||
<DependentUpon>ObjectGraphControl.xaml</DependentUpon> |
<Compile Include="Visualizers\Graph\ExpandedContentNodes.cs" /> |
||||||
<SubType>Code</SubType> |
<Compile Include="Visualizers\Graph\ExpandedExpressions.cs" /> |
||||||
</Compile> |
<Compile Include="Visualizers\Graph\Layout\ContentNodeEventArgs.cs" /> |
||||||
<Compile Include="Visualizers\Graph\ObjectGraph\NamedEdge.cs" /> |
<Compile Include="Visualizers\Graph\Layout\ContentPropertyNode.cs" /> |
||||||
<Compile Include="Visualizers\Graph\TreeModel\AbstractNode.cs" /> |
<Compile Include="Visualizers\Graph\Layout\ContentNode.cs" /> |
||||||
<Compile Include="Visualizers\Graph\TreeModel\BaseClassNode.cs" /> |
<Compile Include="Visualizers\Graph\Layout\GraphEdgeRouter.cs" /> |
||||||
<Compile Include="Visualizers\Graph\TreeModel\ThisNode.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Box.cs" /> |
||||||
<Compile Include="Visualizers\Graph\TreeModel\NonPublicMembersNode.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Edge.cs" /> |
||||||
<Compile Include="Visualizers\Graph\TreeModel\PropertyNode.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\EdgeRouter.cs" /> |
||||||
<Compile Include="Visualizers\GridVisualizer\ValueProviders\GridValuesProvider.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\GeomUtils.cs" /> |
||||||
<Compile Include="Visualizers\IEnumerableNode.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IEdge.cs" /> |
||||||
<Compile Include="Visualizers\PresentationBindings\GridViewColumnHider.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IPoint.cs" /> |
||||||
<Compile Include="Visualizers\PresentationBindings\GridViewHideableColumn.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IRect.cs" /> |
||||||
<Compile Include="Visualizers\PresentationBindings\TooltipVisibilityConverter.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Point2D.cs" /> |
||||||
<Compile Include="Visualizers\TextVisualizer\TextVisualizerMode.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\EdgeStartEnd.cs" /> |
||||||
<Compile Include="Visualizers\TextVisualizer\TextVisualizerWindow.xaml.cs"> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RoutedEdge.cs" /> |
||||||
<DependentUpon>TextVisualizerWindow.xaml</DependentUpon> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteGraph.cs" /> |
||||||
<SubType>Code</SubType> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteGraphEdge.cs" /> |
||||||
</Compile> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteVertex.cs" /> |
||||||
<Compile Include="Visualizers\Utils\AtomicType.cs" /> |
<Compile Include="Visualizers\Graph\Layout\SplineRouting\ShortestPath\AStarShortestPathFinder.cs" /> |
||||||
<Compile Include="Visualizers\Utils\IEnumerableExtensions.cs" /> |
<Compile Include="Visualizers\Graph\NodeControlCache.cs" /> |
||||||
<Compile Include="Visualizers\Utils\ITreeNode.cs" /> |
<Compile Include="Visualizers\Graph\ObjectGraphControl.xaml.cs"> |
||||||
<Compile Include="Visualizers\Utils\LinqUtils.cs" /> |
<DependentUpon>ObjectGraphControl.xaml</DependentUpon> |
||||||
<Compile Include="Visualizers\Utils\ListHelper.cs" /> |
<SubType>Code</SubType> |
||||||
<Compile Include="Visualizers\Utils\StringHelper.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Utils\TreeFlattener.cs" /> |
<Compile Include="Visualizers\Graph\ObjectGraph\NamedEdge.cs" /> |
||||||
<Compile Include="Visualizers\Utils\TypeResolver.cs" /> |
<Compile Include="Visualizers\Graph\TreeModel\AbstractNode.cs" /> |
||||||
<EmbeddedResource Include="Service\DebuggeeExceptionForm.resx"> |
<Compile Include="Visualizers\Graph\TreeModel\BaseClassNode.cs" /> |
||||||
<DependentUpon>DebuggeeExceptionForm.cs</DependentUpon> |
<Compile Include="Visualizers\Graph\TreeModel\ThisNode.cs" /> |
||||||
</EmbeddedResource> |
<Compile Include="Visualizers\Graph\TreeModel\NonPublicMembersNode.cs" /> |
||||||
<Compile Include="Service\RemotingConfigurationHelpper.cs" /> |
<Compile Include="Visualizers\Graph\TreeModel\PropertyNode.cs" /> |
||||||
<Compile Include="Service\RunToCursorCommand.cs" /> |
<Compile Include="Visualizers\GridVisualizer\ValueProviders\GridValuesProvider.cs" /> |
||||||
<Compile Include="Service\WindowsDebugger.cs" /> |
<Compile Include="Visualizers\IEnumerableNode.cs" /> |
||||||
<EmbeddedResource Include="Options\DebuggingOptionsPanel.resx"> |
<Compile Include="Visualizers\PresentationBindings\GridViewColumnHider.cs" /> |
||||||
<DependentUpon>DebuggingOptionsPanel.cs</DependentUpon> |
<Compile Include="Visualizers\PresentationBindings\GridViewHideableColumn.cs" /> |
||||||
</EmbeddedResource> |
<Compile Include="Visualizers\PresentationBindings\TooltipVisibilityConverter.cs" /> |
||||||
<EmbeddedResource Include="Options\DebuggingSymbolsPanel.resx"> |
<Compile Include="Visualizers\TextVisualizer\TextVisualizerMode.cs" /> |
||||||
<DependentUpon>DebuggingSymbolsPanel.cs</DependentUpon> |
<Compile Include="Visualizers\TextVisualizer\TextVisualizerWindow.xaml.cs"> |
||||||
</EmbeddedResource> |
<DependentUpon>TextVisualizerWindow.xaml</DependentUpon> |
||||||
<EmbeddedResource Include="Service\DebuggerEventForm.resx"> |
<SubType>Code</SubType> |
||||||
<DependentUpon>DebuggerEventForm.cs</DependentUpon> |
</Compile> |
||||||
</EmbeddedResource> |
<Compile Include="Visualizers\Utils\AtomicType.cs" /> |
||||||
<Compile Include="Service\SetCurrentStatementCommand.cs" /> |
<Compile Include="Visualizers\Utils\IEnumerableExtensions.cs" /> |
||||||
<Compile Include="..\..\..\Main\GlobalAssemblyInfo.cs"> |
<Compile Include="Visualizers\Utils\ITreeNode.cs" /> |
||||||
<Link>Properties\GlobalAssemblyInfo.cs</Link> |
<Compile Include="Visualizers\Utils\LinqUtils.cs" /> |
||||||
</Compile> |
<Compile Include="Visualizers\Utils\ListHelper.cs" /> |
||||||
<Compile Include="Pads\DebuggerPad.cs" /> |
<Compile Include="Visualizers\Utils\StringHelper.cs" /> |
||||||
<Compile Include="Pads\RunningThreadsPad.Menu.cs" /> |
<Compile Include="Visualizers\Utils\TreeFlattener.cs" /> |
||||||
<Compile Include="TreeModel\TreeNode.cs" /> |
<Compile Include="Visualizers\Utils\TypeResolver.cs" /> |
||||||
<Compile Include="TreeModel\Adapters\TreeViewVarNode.cs"> |
<EmbeddedResource Include="Service\DebuggeeExceptionForm.resx"> |
||||||
<SubType>Component</SubType> |
<DependentUpon>DebuggeeExceptionForm.cs</DependentUpon> |
||||||
</Compile> |
</EmbeddedResource> |
||||||
<Compile Include="TreeModel\ArrayRangeNode.cs" /> |
<Compile Include="Service\RemotingConfigurationHelpper.cs" /> |
||||||
<Compile Include="TreeModel\ExpressionNode.cs" /> |
<Compile Include="Service\RunToCursorCommand.cs" /> |
||||||
<Compile Include="TreeModel\IContextMenu.cs" /> |
<Compile Include="Service\WindowsDebugger.cs" /> |
||||||
<Compile Include="TreeModel\ISetText.cs" /> |
<EmbeddedResource Include="Options\DebuggingOptionsPanel.resx"> |
||||||
<Compile Include="TreeModel\ChildNodesOfObject.cs" /> |
<DependentUpon>DebuggingOptionsPanel.cs</DependentUpon> |
||||||
<Compile Include="TreeModel\StackFrameNode.cs" /> |
</EmbeddedResource> |
||||||
<Compile Include="TreeModel\Utils.cs" /> |
<EmbeddedResource Include="Options\DebuggingSymbolsPanel.resx"> |
||||||
<Compile Include="Visualizers\Graph\Drawing\CanvasLocationAdapter.cs" /> |
<DependentUpon>DebuggingSymbolsPanel.cs</DependentUpon> |
||||||
<Compile Include="Visualizers\Graph\Drawing\GraphDrawer.cs" /> |
</EmbeddedResource> |
||||||
<Compile Include="Visualizers\Graph\ExpandedPaths.cs" /> |
<EmbeddedResource Include="Service\DebuggerEventForm.resx"> |
||||||
<Compile Include="Visualizers\Graph\Layout\GraphDiff.cs" /> |
<DependentUpon>DebuggerEventForm.cs</DependentUpon> |
||||||
<Compile Include="Visualizers\Graph\Layout\GraphMatcher.cs" /> |
</EmbeddedResource> |
||||||
<Compile Include="Visualizers\Graph\Layout\PositionedEdge.cs" /> |
<Compile Include="Service\SetCurrentStatementCommand.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\PositionedGraph.cs" /> |
<Compile Include="..\..\..\Main\GlobalAssemblyInfo.cs"> |
||||||
<Compile Include="Visualizers\Graph\Layout\PositionedGraphNode.cs" /> |
<Link>Properties\GlobalAssemblyInfo.cs</Link> |
||||||
<Compile Include="Visualizers\Graph\Layout\PositionedNodeProperty.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Graph\Layout\PositionedPropertyEventArgs.cs" /> |
<Compile Include="Pads\DebuggerPad.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\Tree\LayoutDirection.cs" /> |
<Compile Include="Pads\RunningThreadsPad.Menu.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\Tree\TreeEdge.cs" /> |
<Compile Include="TreeModel\TreeNode.cs" /> |
||||||
<Compile Include="Visualizers\Graph\Layout\Tree\TreeLayouter.cs" /> |
<Compile Include="TreeModel\Adapters\TreeViewVarNode.cs"> |
||||||
<Compile Include="Visualizers\Graph\Layout\Tree\TreeGraphNode.cs" /> |
<SubType>Component</SubType> |
||||||
<Compile Include="Visualizers\Graph\Layout\Tree\TreeGraphNodeLR.cs" /> |
</Compile> |
||||||
<Compile Include="Visualizers\Graph\Layout\Tree\TreeGraphNodeTB.cs" /> |
<Compile Include="TreeModel\ArrayRangeNode.cs" /> |
||||||
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraph.cs" /> |
<Compile Include="TreeModel\ExpressionNode.cs" /> |
||||||
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphBuilder.cs" /> |
<Compile Include="TreeModel\IContextMenu.cs" /> |
||||||
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphNode.cs" /> |
<Compile Include="TreeModel\ISetText.cs" /> |
||||||
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphProperty.cs" /> |
<Compile Include="TreeModel\ChildNodesOfObject.cs" /> |
||||||
<Compile Include="Visualizers\GridVisualizer\GridVisualizerWindow.xaml.cs"> |
<Compile Include="TreeModel\StackFrameNode.cs" /> |
||||||
<DependentUpon>GridVisualizerWindow.xaml</DependentUpon> |
<Compile Include="TreeModel\Utils.cs" /> |
||||||
<SubType>Code</SubType> |
<Compile Include="Visualizers\Graph\Drawing\CanvasLocationAdapter.cs" /> |
||||||
</Compile> |
<Compile Include="Visualizers\Graph\Drawing\GraphDrawer.cs" /> |
||||||
<Compile Include="Visualizers\GridVisualizer\ObjectValue.cs" /> |
<Compile Include="Visualizers\Graph\ExpandedPaths.cs" /> |
||||||
<Compile Include="Visualizers\GridVisualizer\ValueProviders\EnumerableValuesProvider.cs" /> |
<Compile Include="Visualizers\Graph\Layout\GraphDiff.cs" /> |
||||||
<Compile Include="Visualizers\GridVisualizer\ValueProviders\ListValuesProvider.cs" /> |
<Compile Include="Visualizers\Graph\Layout\GraphMatcher.cs" /> |
||||||
<Compile Include="Visualizers\ObjectProperty.cs" /> |
<Compile Include="Visualizers\Graph\Layout\PositionedEdge.cs" /> |
||||||
<Compile Include="Visualizers\Utils\DebuggerHelpers.cs" /> |
<Compile Include="Visualizers\Graph\Layout\PositionedGraph.cs" /> |
||||||
<Compile Include="Visualizers\Utils\DictionaryExtensions.cs" /> |
<Compile Include="Visualizers\Graph\Layout\PositionedGraphNode.cs" /> |
||||||
<Compile Include="Visualizers\Utils\Lookup.cs" /> |
<Compile Include="Visualizers\Graph\Layout\PositionedNodeProperty.cs" /> |
||||||
<Compile Include="Visualizers\Utils\LookupValueCollection.cs" /> |
<Compile Include="Visualizers\Graph\Layout\PositionedPropertyEventArgs.cs" /> |
||||||
<Compile Include="Visualizers\Graph\ObjectGraphWindow.xaml.cs"> |
<Compile Include="Visualizers\Graph\Layout\Tree\LayoutDirection.cs" /> |
||||||
<DependentUpon>ObjectGraphWindow.xaml</DependentUpon> |
<Compile Include="Visualizers\Graph\Layout\Tree\TreeEdge.cs" /> |
||||||
</Compile> |
<Compile Include="Visualizers\Graph\Layout\Tree\TreeLayouter.cs" /> |
||||||
<Compile Include="Visualizers\ICorDebug.cs" /> |
<Compile Include="Visualizers\Graph\Layout\Tree\TreeGraphNode.cs" /> |
||||||
<Compile Include="Visualizers\IListNode.cs" /> |
<Compile Include="Visualizers\Graph\Layout\Tree\TreeGraphNodeLR.cs" /> |
||||||
<Compile Include="Visualizers\PresentationBindings\DisplayAttribute.cs" /> |
<Compile Include="Visualizers\Graph\Layout\Tree\TreeGraphNodeTB.cs" /> |
||||||
<Compile Include="Visualizers\PresentationBindings\EnumViewModel.cs" /> |
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraph.cs" /> |
||||||
<Compile Include="Visualizers\PresentationBindings\ViewModelBase.cs" /> |
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphBuilder.cs" /> |
||||||
<None Include="COPYING" /> |
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphNode.cs" /> |
||||||
</ItemGroup> |
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphProperty.cs" /> |
||||||
<ItemGroup> |
<Compile Include="Visualizers\GridVisualizer\GridVisualizerWindow.xaml.cs"> |
||||||
<Content Include="Debugger.AddIn.addin"> |
<DependentUpon>GridVisualizerWindow.xaml</DependentUpon> |
||||||
<CopyToOutputDirectory>Never</CopyToOutputDirectory> |
<SubType>Code</SubType> |
||||||
</Content> |
</Compile> |
||||||
<ProjectReference Include="..\..\..\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj"> |
<Compile Include="Visualizers\GridVisualizer\ObjectValue.cs" /> |
||||||
<Project>{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}</Project> |
<Compile Include="Visualizers\GridVisualizer\ValueProviders\EnumerableValuesProvider.cs" /> |
||||||
<Name>ICSharpCode.AvalonEdit</Name> |
<Compile Include="Visualizers\GridVisualizer\ValueProviders\ListValuesProvider.cs" /> |
||||||
<Private>False</Private> |
<Compile Include="Visualizers\ObjectProperty.cs" /> |
||||||
</ProjectReference> |
<Compile Include="Visualizers\Utils\DebuggerHelpers.cs" /> |
||||||
<ProjectReference Include="..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj"> |
<Compile Include="Visualizers\Utils\DictionaryExtensions.cs" /> |
||||||
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project> |
<Compile Include="Visualizers\Utils\Lookup.cs" /> |
||||||
<Name>ICSharpCode.SharpDevelop</Name> |
<Compile Include="Visualizers\Utils\LookupValueCollection.cs" /> |
||||||
<Private>False</Private> |
<Compile Include="Visualizers\Graph\ObjectGraphWindow.xaml.cs"> |
||||||
</ProjectReference> |
<DependentUpon>ObjectGraphWindow.xaml</DependentUpon> |
||||||
<ProjectReference Include="..\..\..\Main\Core\Project\ICSharpCode.Core.csproj"> |
</Compile> |
||||||
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project> |
<Compile Include="Visualizers\ICorDebug.cs" /> |
||||||
<Name>ICSharpCode.Core</Name> |
<Compile Include="Visualizers\IListNode.cs" /> |
||||||
<Private>False</Private> |
<Compile Include="Visualizers\PresentationBindings\DisplayAttribute.cs" /> |
||||||
</ProjectReference> |
<Compile Include="Visualizers\PresentationBindings\EnumViewModel.cs" /> |
||||||
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj"> |
<Compile Include="Visualizers\PresentationBindings\ViewModelBase.cs" /> |
||||||
<Project>{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}</Project> |
<None Include="COPYING" /> |
||||||
<Name>ICSharpCode.Core.Presentation</Name> |
</ItemGroup> |
||||||
<Private>False</Private> |
<ItemGroup> |
||||||
</ProjectReference> |
<Content Include="Debugger.AddIn.addin"> |
||||||
<ProjectReference Include="..\Debugger.Core\Debugger.Core.csproj"> |
<CopyToOutputDirectory>Never</CopyToOutputDirectory> |
||||||
<Project>{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}</Project> |
</Content> |
||||||
<Name>Debugger.Core</Name> |
<ProjectReference Include="..\..\..\Libraries\AvalonEdit\ICSharpCode.AvalonEdit\ICSharpCode.AvalonEdit.csproj"> |
||||||
<Private>False</Private> |
<Project>{6C55B776-26D4-4DB3-A6AB-87E783B2F3D1}</Project> |
||||||
<SpecificVersion>False</SpecificVersion> |
<Name>ICSharpCode.AvalonEdit</Name> |
||||||
</ProjectReference> |
<Private>False</Private> |
||||||
<Content Include="PostBuildEvent.proj" /> |
</ProjectReference> |
||||||
<ProjectReference Include="..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj"> |
<ProjectReference Include="..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj"> |
||||||
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project> |
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project> |
||||||
<Name>ICSharpCode.SharpDevelop.Dom</Name> |
<Name>ICSharpCode.SharpDevelop</Name> |
||||||
<Private>False</Private> |
<Private>False</Private> |
||||||
</ProjectReference> |
</ProjectReference> |
||||||
<ProjectReference Include="..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj"> |
<ProjectReference Include="..\..\..\Main\Core\Project\ICSharpCode.Core.csproj"> |
||||||
<Project>{8035765F-D51F-4A0C-A746-2FD100E19419}</Project> |
<Project>{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}</Project> |
||||||
<Name>ICSharpCode.SharpDevelop.Widgets</Name> |
<Name>ICSharpCode.Core</Name> |
||||||
<Private>False</Private> |
<Private>False</Private> |
||||||
</ProjectReference> |
</ProjectReference> |
||||||
</ItemGroup> |
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.Presentation\ICSharpCode.Core.Presentation.csproj"> |
||||||
<ItemGroup> |
<Project>{7E4A7172-7FF5-48D0-B719-7CD959DD1AC9}</Project> |
||||||
<Page Include="Pads\CallStackPad.xaml" /> |
<Name>ICSharpCode.Core.Presentation</Name> |
||||||
<Page Include="Pads\Controls\ConditionCell.xaml" /> |
<Private>False</Private> |
||||||
<Page Include="Pads\Controls\SimpleListViewControl.xaml" /> |
</ProjectReference> |
||||||
<Page Include="Pads\Controls\WatchList.xaml" /> |
<ProjectReference Include="..\Debugger.Core\Debugger.Core.csproj"> |
||||||
<Page Include="Pads\WatchInputBox.xaml" /> |
<Project>{1D18D788-F7EE-4585-A23B-34DC8EC63CB8}</Project> |
||||||
<Page Include="Service\EditBreakpointScriptWindow.xaml" /> |
<Name>Debugger.Core</Name> |
||||||
<Page Include="Visualizers\Graph\Drawing\NodeControlResources.xaml" /> |
<Private>False</Private> |
||||||
<Page Include="Visualizers\Graph\Drawing\PositionedGraphNodeControl.xaml" /> |
<SpecificVersion>False</SpecificVersion> |
||||||
<Page Include="Visualizers\Graph\ObjectGraphControl.xaml" /> |
</ProjectReference> |
||||||
<Page Include="Visualizers\GridVisualizer\GridVisualizerWindow.xaml" /> |
<Content Include="PostBuildEvent.proj" /> |
||||||
<Page Include="Visualizers\TextVisualizer\TextVisualizerWindow.xaml" /> |
<ProjectReference Include="..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj"> |
||||||
<ProjectReference Include="..\..\..\Libraries\NRefactory\Project\NRefactory.csproj"> |
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project> |
||||||
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project> |
<Name>ICSharpCode.SharpDevelop.Dom</Name> |
||||||
<Name>NRefactory</Name> |
<Private>False</Private> |
||||||
<Private>False</Private> |
</ProjectReference> |
||||||
</ProjectReference> |
<ProjectReference Include="..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj"> |
||||||
<ProjectReference Include="..\..\..\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj"> |
<Project>{8035765F-D51F-4A0C-A746-2FD100E19419}</Project> |
||||||
<Project>{E73BB233-D88B-44A7-A98F-D71EE158381D}</Project> |
<Name>ICSharpCode.SharpDevelop.Widgets</Name> |
||||||
<Name>Aga.Controls</Name> |
<Private>False</Private> |
||||||
<Private>False</Private> |
</ProjectReference> |
||||||
</ProjectReference> |
</ItemGroup> |
||||||
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj"> |
<ItemGroup> |
||||||
<Project>{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}</Project> |
<Page Include="Pads\CallStackPad.xaml" /> |
||||||
<Name>ICSharpCode.Core.WinForms</Name> |
<Page Include="Pads\Controls\ConditionCell.xaml" /> |
||||||
<Private>False</Private> |
<Page Include="Pads\Controls\SimpleListViewControl.xaml" /> |
||||||
</ProjectReference> |
<Page Include="Pads\Controls\WatchList.xaml" /> |
||||||
<Folder Include="Pads\Controls" /> |
<Page Include="Pads\ParallelPad\DrawSurface.xaml" /> |
||||||
<Folder Include="Visualizers\Graph" /> |
<Page Include="Pads\ParallelPad\ThreadStack.xaml" /> |
||||||
<Folder Include="Visualizers\Graph\Drawing" /> |
<Page Include="Pads\WatchInputBox.xaml" /> |
||||||
<Folder Include="Visualizers\Graph\Layout" /> |
<Page Include="Service\EditBreakpointScriptWindow.xaml" /> |
||||||
<Folder Include="Visualizers\Graph\Layout\SplineRouting" /> |
<Page Include="Visualizers\Graph\Drawing\NodeControlResources.xaml" /> |
||||||
<Folder Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph" /> |
<Page Include="Visualizers\Graph\Drawing\PositionedGraphNodeControl.xaml" /> |
||||||
<Folder Include="Visualizers\Graph\Layout\SplineRouting\ShortestPath" /> |
<Page Include="Visualizers\Graph\ObjectGraphControl.xaml" /> |
||||||
<Folder Include="Visualizers\Graph\Layout\Tree" /> |
<Page Include="Visualizers\GridVisualizer\GridVisualizerWindow.xaml" /> |
||||||
<Folder Include="Visualizers\Graph\TreeModel" /> |
<Page Include="Visualizers\TextVisualizer\TextVisualizerWindow.xaml" /> |
||||||
<Folder Include="Visualizers\Graph\ObjectGraph" /> |
<ProjectReference Include="..\..\..\Libraries\NRefactory\Project\NRefactory.csproj"> |
||||||
<Folder Include="Visualizers\GridVisualizer\ValueProviders" /> |
<Project>{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}</Project> |
||||||
<Folder Include="Visualizers\Controls" /> |
<Name>NRefactory</Name> |
||||||
<Folder Include="Visualizers\Common" /> |
<Private>False</Private> |
||||||
<Folder Include="Visualizers\Commands" /> |
</ProjectReference> |
||||||
<Folder Include="Visualizers\TextVisualizer" /> |
<ProjectReference Include="..\..\..\Libraries\TreeViewAdv\Aga.Controls\Aga.Controls.csproj"> |
||||||
<Folder Include="Visualizers\Utils" /> |
<Project>{E73BB233-D88B-44A7-A98F-D71EE158381D}</Project> |
||||||
<Folder Include="Visualizers\GridVisualizer" /> |
<Name>Aga.Controls</Name> |
||||||
<Folder Include="Visualizers\PresentationBindings" /> |
<Private>False</Private> |
||||||
<Page Include="Visualizers\Graph\ObjectGraphWindow.xaml" /> |
</ProjectReference> |
||||||
</ItemGroup> |
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj"> |
||||||
<ItemGroup> |
<Project>{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}</Project> |
||||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5"> |
<Name>ICSharpCode.Core.WinForms</Name> |
||||||
<Visible>False</Visible> |
<Private>False</Private> |
||||||
<ProductName>.NET Framework Client Profile</ProductName> |
</ProjectReference> |
||||||
<Install>false</Install> |
<Folder Include="Pads\Controls" /> |
||||||
</BootstrapperPackage> |
<Folder Include="Pads\ParallelPad" /> |
||||||
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0"> |
<Folder Include="Visualizers\Graph" /> |
||||||
<Visible>False</Visible> |
<Folder Include="Visualizers\Graph\Drawing" /> |
||||||
<ProductName>.NET Framework 2.0 %28x86%29</ProductName> |
<Folder Include="Visualizers\Graph\Layout" /> |
||||||
<Install>true</Install> |
<Folder Include="Visualizers\Graph\Layout\SplineRouting" /> |
||||||
</BootstrapperPackage> |
<Folder Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph" /> |
||||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0"> |
<Folder Include="Visualizers\Graph\Layout\SplineRouting\ShortestPath" /> |
||||||
<Visible>False</Visible> |
<Folder Include="Visualizers\Graph\Layout\Tree" /> |
||||||
<ProductName>.NET Framework 3.0 %28x86%29</ProductName> |
<Folder Include="Visualizers\Graph\TreeModel" /> |
||||||
<Install>false</Install> |
<Folder Include="Visualizers\Graph\ObjectGraph" /> |
||||||
</BootstrapperPackage> |
<Folder Include="Visualizers\GridVisualizer\ValueProviders" /> |
||||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5"> |
<Folder Include="Visualizers\Controls" /> |
||||||
<Visible>False</Visible> |
<Folder Include="Visualizers\Common" /> |
||||||
<ProductName>.NET Framework 3.5</ProductName> |
<Folder Include="Visualizers\Commands" /> |
||||||
<Install>false</Install> |
<Folder Include="Visualizers\TextVisualizer" /> |
||||||
</BootstrapperPackage> |
<Folder Include="Visualizers\Utils" /> |
||||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> |
<Folder Include="Visualizers\GridVisualizer" /> |
||||||
<Visible>False</Visible> |
<Folder Include="Visualizers\PresentationBindings" /> |
||||||
<ProductName>.NET Framework 3.5 SP1</ProductName> |
<Page Include="Visualizers\Graph\ObjectGraphWindow.xaml" /> |
||||||
<Install>false</Install> |
</ItemGroup> |
||||||
</BootstrapperPackage> |
<ItemGroup> |
||||||
</ItemGroup> |
<BootstrapperPackage Include="Microsoft.Net.Client.3.5"> |
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> |
<Visible>False</Visible> |
||||||
<Import Project="PostBuildEvent.proj" /> |
<ProductName>.NET Framework Client Profile</ProductName> |
||||||
|
<Install>false</Install> |
||||||
|
</BootstrapperPackage> |
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0"> |
||||||
|
<Visible>False</Visible> |
||||||
|
<ProductName>.NET Framework 2.0 %28x86%29</ProductName> |
||||||
|
<Install>true</Install> |
||||||
|
</BootstrapperPackage> |
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0"> |
||||||
|
<Visible>False</Visible> |
||||||
|
<ProductName>.NET Framework 3.0 %28x86%29</ProductName> |
||||||
|
<Install>false</Install> |
||||||
|
</BootstrapperPackage> |
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5"> |
||||||
|
<Visible>False</Visible> |
||||||
|
<ProductName>.NET Framework 3.5</ProductName> |
||||||
|
<Install>false</Install> |
||||||
|
</BootstrapperPackage> |
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> |
||||||
|
<Visible>False</Visible> |
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName> |
||||||
|
<Install>false</Install> |
||||||
|
</BootstrapperPackage> |
||||||
|
</ItemGroup> |
||||||
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> |
||||||
|
<Import Project="PostBuildEvent.proj" /> |
||||||
</Project> |
</Project> |
@ -0,0 +1,133 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<UserControl |
||||||
|
x:Class="Debugger.AddIn.Pads.ParallelPad.DrawSurface" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Debugger.AddIn.Pads.ParallelPad" |
||||||
|
Background="White"> |
||||||
|
<UserControl.Resources> |
||||||
|
<LinearGradientBrush |
||||||
|
x:Key="SilverBrushKey" |
||||||
|
EndPoint="0,1" |
||||||
|
StartPoint="0,0"> |
||||||
|
<LinearGradientBrush.GradientStops> |
||||||
|
<GradientStop |
||||||
|
Offset="0.7" |
||||||
|
Color="White" /> |
||||||
|
<GradientStop |
||||||
|
Offset="1" |
||||||
|
Color="LightGray" /> |
||||||
|
</LinearGradientBrush.GradientStops> |
||||||
|
</LinearGradientBrush> |
||||||
|
<LinearGradientBrush |
||||||
|
x:Key="SilverPressedBrushKey" |
||||||
|
EndPoint="0,1" |
||||||
|
StartPoint="0,0"> |
||||||
|
<LinearGradientBrush.GradientStops> |
||||||
|
<GradientStop |
||||||
|
Offset="0.3" |
||||||
|
Color="White" /> |
||||||
|
<GradientStop |
||||||
|
Offset="0" |
||||||
|
Color="LightGray" /> |
||||||
|
</LinearGradientBrush.GradientStops> |
||||||
|
</LinearGradientBrush> |
||||||
|
<ControlTemplate |
||||||
|
x:Key="ButtonTemplate" |
||||||
|
TargetType="Button"> |
||||||
|
<Border |
||||||
|
Width="28" |
||||||
|
Height="17" |
||||||
|
Name="TheBorder" |
||||||
|
CornerRadius="2,2,2,2" |
||||||
|
BorderThickness="1" |
||||||
|
BorderBrush="LightGray"> |
||||||
|
<Canvas> |
||||||
|
<TextBlock |
||||||
|
Canvas.Top="2" |
||||||
|
Canvas.Left="1" |
||||||
|
Text="100%" |
||||||
|
FontSize="9" |
||||||
|
Foreground="LightGray" /> |
||||||
|
</Canvas> |
||||||
|
</Border> |
||||||
|
<ControlTemplate.Triggers> |
||||||
|
<Trigger |
||||||
|
Property="ButtonBase.IsMouseOver" |
||||||
|
Value="True"> |
||||||
|
<Setter |
||||||
|
TargetName="TheBorder" |
||||||
|
Property="Background" |
||||||
|
Value="{StaticResource SilverBrushKey}" /> |
||||||
|
<Setter |
||||||
|
TargetName="TheBorder" |
||||||
|
Property="BorderBrush" |
||||||
|
Value="Silver" /> |
||||||
|
</Trigger> |
||||||
|
<Trigger |
||||||
|
Property="ButtonBase.IsPressed" |
||||||
|
Value="True"> |
||||||
|
<Setter |
||||||
|
TargetName="TheBorder" |
||||||
|
Property="Background" |
||||||
|
Value="{StaticResource SilverPressedBrushKey}" /> |
||||||
|
<Setter |
||||||
|
TargetName="TheBorder" |
||||||
|
Property="BorderBrush" |
||||||
|
Value="Silver" /> |
||||||
|
</Trigger> |
||||||
|
</ControlTemplate.Triggers> |
||||||
|
</ControlTemplate> |
||||||
|
</UserControl.Resources> |
||||||
|
<Grid> |
||||||
|
<Grid.ColumnDefinitions> |
||||||
|
<ColumnDefinition |
||||||
|
Width="40" /> |
||||||
|
<ColumnDefinition |
||||||
|
Width="*" /> |
||||||
|
</Grid.ColumnDefinitions> |
||||||
|
<Canvas |
||||||
|
Margin="3,3"> |
||||||
|
<TextBlock |
||||||
|
Foreground="LightGray" |
||||||
|
x:Name="PercentText" |
||||||
|
HorizontalAlignment="Center">100%</TextBlock> |
||||||
|
<Line |
||||||
|
X1="0" |
||||||
|
Y1="20" |
||||||
|
X2="28" |
||||||
|
Y2="20" |
||||||
|
StrokeThickness="2" |
||||||
|
Stroke="LightGray" /> |
||||||
|
<Slider |
||||||
|
Canvas.Top="23" |
||||||
|
Name="SliderControl" |
||||||
|
Ticks="1,2,3,4,5,6,7,8,9,10" |
||||||
|
Opacity=".4" |
||||||
|
Value="5" |
||||||
|
Interval="1" |
||||||
|
TickPlacement="BottomRight" |
||||||
|
Minimum="1" |
||||||
|
Maximum="10" |
||||||
|
Height="100" |
||||||
|
Width="30" |
||||||
|
Orientation="Vertical" |
||||||
|
ValueChanged="SliderControl_ValueChanged" /> |
||||||
|
<Line |
||||||
|
X1="0" |
||||||
|
Y1="125" |
||||||
|
X2="28" |
||||||
|
Y2="125" |
||||||
|
StrokeThickness="2" |
||||||
|
Stroke="LightGray" /> |
||||||
|
<Button |
||||||
|
Canvas.Top="130" |
||||||
|
Name="Reset" |
||||||
|
Click="Reset_Click" |
||||||
|
Template="{StaticResource ButtonTemplate}" /> |
||||||
|
</Canvas> |
||||||
|
<Canvas x:Name="drawingSurface" Grid.Column="1"> |
||||||
|
<local:ParallelStacksGraphLayout |
||||||
|
x:Name="ParallelStacksLayout" |
||||||
|
LayoutAlgorithmType = "Tree" |
||||||
|
OverlapRemovalAlgorithmType = "FSA"/> |
||||||
|
</Canvas> |
||||||
|
</Grid> |
||||||
|
</UserControl> |
@ -0,0 +1,105 @@ |
|||||||
|
// 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.Windows; |
||||||
|
using System.Windows.Controls; |
||||||
|
using System.Windows.Input; |
||||||
|
using System.Windows.Media; |
||||||
|
|
||||||
|
namespace Debugger.AddIn.Pads.ParallelPad |
||||||
|
{ |
||||||
|
public partial class DrawSurface : UserControl |
||||||
|
{ |
||||||
|
Point dragStartedPoint; |
||||||
|
|
||||||
|
TransformGroup group = new TransformGroup(); |
||||||
|
ScaleTransform zoom = new ScaleTransform(); |
||||||
|
TranslateTransform translate = new TranslateTransform(); |
||||||
|
|
||||||
|
public DrawSurface() |
||||||
|
{ |
||||||
|
InitializeComponent(); |
||||||
|
|
||||||
|
group.Children.Add(zoom); |
||||||
|
group.Children.Add(translate); |
||||||
|
drawingSurface.RenderTransform = group; |
||||||
|
|
||||||
|
this.MouseLeftButtonDown += DrawSurface_PreviewMouseLeftButtonDown; |
||||||
|
this.MouseLeftButtonUp += DrawSurface_MouseLeftButtonUp; |
||||||
|
} |
||||||
|
|
||||||
|
public void SetGraph(ParallelStacksGraph graph) |
||||||
|
{ |
||||||
|
this.ParallelStacksLayout.Graph = graph; |
||||||
|
this.ParallelStacksLayout.Relayout(); |
||||||
|
} |
||||||
|
|
||||||
|
#region Pan
|
||||||
|
|
||||||
|
void DrawSurface_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) |
||||||
|
{ |
||||||
|
if (e.OriginalSource is Slider || e.OriginalSource is Button) |
||||||
|
return; |
||||||
|
|
||||||
|
dragStartedPoint = e.GetPosition(drawingSurface); |
||||||
|
drawingSurface.CaptureMouse(); |
||||||
|
this.PreviewMouseMove += DrawSurface_PreviewMouseMove; |
||||||
|
e.Handled = true; |
||||||
|
} |
||||||
|
|
||||||
|
void DrawSurface_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) |
||||||
|
{ |
||||||
|
if (e.OriginalSource is Slider || e.OriginalSource is Button) |
||||||
|
return; |
||||||
|
|
||||||
|
drawingSurface.ReleaseMouseCapture(); |
||||||
|
this.PreviewMouseMove -= DrawSurface_PreviewMouseMove; |
||||||
|
Cursor = Cursors.Arrow; |
||||||
|
} |
||||||
|
|
||||||
|
void DrawSurface_PreviewMouseMove(object sender, MouseEventArgs e) |
||||||
|
{ |
||||||
|
if (!drawingSurface.IsMouseCaptured) return; |
||||||
|
|
||||||
|
if (e.LeftButton == MouseButtonState.Pressed) |
||||||
|
{ |
||||||
|
if (e.OriginalSource is Slider || e.OriginalSource is Button) |
||||||
|
return; |
||||||
|
|
||||||
|
Cursor = Cursors.ScrollAll; |
||||||
|
Vector v = dragStartedPoint - e.GetPosition(drawingSurface); |
||||||
|
translate.X = v.X / 5; |
||||||
|
translate.Y = v.Y / 5; |
||||||
|
e.Handled = true; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Zoom
|
||||||
|
|
||||||
|
void SliderControl_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) |
||||||
|
{ |
||||||
|
if (e.OldValue == 0) |
||||||
|
return; |
||||||
|
|
||||||
|
double value = (e.NewValue / 5d) * 100; |
||||||
|
|
||||||
|
this.PercentText.Text = string.Format("{0}%", value); |
||||||
|
|
||||||
|
// zoom canvas
|
||||||
|
zoom.ScaleX = e.NewValue / 5d; |
||||||
|
zoom.ScaleY = e.NewValue / 5d; |
||||||
|
zoom.CenterX = drawingSurface.ActualWidth / 2d; |
||||||
|
zoom.CenterY = drawingSurface.ActualHeight / 2d; |
||||||
|
} |
||||||
|
|
||||||
|
void Reset_Click(object sender, RoutedEventArgs e) |
||||||
|
{ |
||||||
|
this.SliderControl.Value = 5; |
||||||
|
} |
||||||
|
|
||||||
|
#endregion
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,357 @@ |
|||||||
|
// 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.Generic; |
||||||
|
using System.Collections.ObjectModel; |
||||||
|
using System.Dynamic; |
||||||
|
using System.Text; |
||||||
|
using System.Windows; |
||||||
|
using System.Windows.Controls; |
||||||
|
using System.Windows.Media; |
||||||
|
|
||||||
|
using Debugger.AddIn.TreeModel; |
||||||
|
using ICSharpCode.Core; |
||||||
|
using ICSharpCode.SharpDevelop.Debugging; |
||||||
|
using ICSharpCode.SharpDevelop.Gui.Pads; |
||||||
|
using ICSharpCode.SharpDevelop.Services; |
||||||
|
|
||||||
|
namespace Debugger.AddIn.Pads.ParallelPad |
||||||
|
{ |
||||||
|
public class ParallelStackPad : DebuggerPad |
||||||
|
{ |
||||||
|
private DrawSurface surface; |
||||||
|
private Process debuggedProcess; |
||||||
|
|
||||||
|
private List<ThreadStack> currentThreadStacks = new List<ThreadStack>(); |
||||||
|
|
||||||
|
protected override void InitializeComponents() |
||||||
|
{ |
||||||
|
surface = new DrawSurface(); |
||||||
|
} |
||||||
|
|
||||||
|
public override object Control { |
||||||
|
get { |
||||||
|
return surface; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
protected override void SelectProcess(Process process) |
||||||
|
{ |
||||||
|
if (debuggedProcess != null) { |
||||||
|
debuggedProcess.Paused -= debuggedProcess_Paused; |
||||||
|
} |
||||||
|
debuggedProcess = process; |
||||||
|
if (debuggedProcess != null) { |
||||||
|
debuggedProcess.Paused += debuggedProcess_Paused; |
||||||
|
} |
||||||
|
|
||||||
|
DebuggerService.DebugStarted += OnReset; |
||||||
|
DebuggerService.DebugStopped += OnReset; |
||||||
|
|
||||||
|
RefreshPad(); |
||||||
|
} |
||||||
|
|
||||||
|
void OnReset(object sender, EventArgs e) |
||||||
|
{ |
||||||
|
currentThreadStacks.Clear(); |
||||||
|
} |
||||||
|
|
||||||
|
void debuggedProcess_Paused(object sender, ProcessEventArgs e) |
||||||
|
{ |
||||||
|
RefreshPad(); |
||||||
|
} |
||||||
|
|
||||||
|
public override void RefreshPad() |
||||||
|
{ |
||||||
|
if (debuggedProcess == null || debuggedProcess.IsRunning) { |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
using(new PrintTimes("Threads refresh")) { |
||||||
|
try { |
||||||
|
OnReset(null, EventArgs.Empty); |
||||||
|
// create all simple ThreadStacks
|
||||||
|
foreach (Thread thread in debuggedProcess.Threads) { |
||||||
|
if (debuggedProcess.IsPaused) { |
||||||
|
Utils.DoEvents(debuggedProcess); |
||||||
|
} |
||||||
|
|
||||||
|
CreateThreadStack(thread); |
||||||
|
} |
||||||
|
|
||||||
|
CreateCommonStacks(); |
||||||
|
} |
||||||
|
catch(AbortedBecauseDebuggeeResumedException) { } |
||||||
|
catch(System.Exception) { |
||||||
|
if (debuggedProcess == null || debuggedProcess.HasExited) { |
||||||
|
// Process unexpectedly exited
|
||||||
|
} else { |
||||||
|
throw; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// paint the ThreadStaks
|
||||||
|
graph = new ParallelStacksGraph(); |
||||||
|
foreach (var stack in this.currentThreadStacks) |
||||||
|
{ |
||||||
|
if (stack == null) |
||||||
|
continue; |
||||||
|
if (stack.ThreadStackParent != null && |
||||||
|
(stack.ThreadStackChildren == null || stack.ThreadStackChildren.Length == 0)) |
||||||
|
continue; |
||||||
|
|
||||||
|
graph.AddVertex(stack); |
||||||
|
|
||||||
|
// add the children
|
||||||
|
AddChildren(stack); |
||||||
|
} |
||||||
|
|
||||||
|
surface.SetGraph(graph); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
ParallelStacksGraph graph; |
||||||
|
void AddChildren(ThreadStack parent) |
||||||
|
{ |
||||||
|
if(parent.ThreadStackChildren == null || parent.ThreadStackChildren.Length == 0) |
||||||
|
return; |
||||||
|
|
||||||
|
foreach (var ts in parent.ThreadStackChildren) |
||||||
|
{ |
||||||
|
if (ts == null) continue; |
||||||
|
|
||||||
|
graph.AddVertex(ts); |
||||||
|
graph.AddEdge(new ParallelStacksEdge(parent, ts)); |
||||||
|
|
||||||
|
if (ts.ThreadStackChildren == null || ts.ThreadStackChildren.Length == 0) |
||||||
|
continue; |
||||||
|
|
||||||
|
AddChildren(ts); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void CreateCommonStacks() |
||||||
|
{ |
||||||
|
// stack.ItemCollection order
|
||||||
|
// 0 -> top of stack = S.C
|
||||||
|
// 1 -> ............ = S.B
|
||||||
|
// .......................
|
||||||
|
// n -> bottom of stack = [External Methods]
|
||||||
|
|
||||||
|
// ThreadStacks with common frame
|
||||||
|
var commonFrameThreads = new Dictionary<string, List<ThreadStack>>(); |
||||||
|
|
||||||
|
bool isOver = false; |
||||||
|
while (true) { |
||||||
|
|
||||||
|
for (int i = currentThreadStacks.Count - 1; i >=0; --i) { |
||||||
|
var stack = currentThreadStacks[i]; |
||||||
|
if (stack.ItemCollection.Count == 0) { |
||||||
|
currentThreadStacks.Remove(stack); |
||||||
|
continue; |
||||||
|
} |
||||||
|
} |
||||||
|
//get all thread stacks with common start frame
|
||||||
|
foreach (var stack in currentThreadStacks) { |
||||||
|
int count = stack.ItemCollection.Count; |
||||||
|
dynamic frame = stack.ItemCollection[count - 1]; |
||||||
|
string fullname = frame.MethodName; |
||||||
|
|
||||||
|
if (!commonFrameThreads.ContainsKey(fullname)) |
||||||
|
commonFrameThreads.Add(fullname, new List<ThreadStack>()); |
||||||
|
|
||||||
|
if (!commonFrameThreads[fullname].Contains(stack)) |
||||||
|
commonFrameThreads[fullname].Add(stack); |
||||||
|
} |
||||||
|
|
||||||
|
// for every list of common stacks, find split place and add them to currentThreadStacks
|
||||||
|
foreach (var frameName in commonFrameThreads.Keys) { |
||||||
|
var listOfCurrentStacks = commonFrameThreads[frameName]; |
||||||
|
|
||||||
|
if (listOfCurrentStacks.Count == 1) // just skip the parents
|
||||||
|
{ |
||||||
|
isOver = true; // we finish when all are pseodo-parents: no more spliting
|
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
isOver = false; |
||||||
|
|
||||||
|
// find the frameIndex where we can split
|
||||||
|
int frameIndex = 0; |
||||||
|
string fn = string.Empty; |
||||||
|
bool canContinue = true; |
||||||
|
|
||||||
|
while(canContinue) { |
||||||
|
for (int i = 0; i < listOfCurrentStacks.Count; ++i) { |
||||||
|
var stack = listOfCurrentStacks[i]; |
||||||
|
if (stack.ItemCollection.Count == frameIndex) |
||||||
|
{ |
||||||
|
canContinue = false; |
||||||
|
break; |
||||||
|
} |
||||||
|
dynamic item = stack.ItemCollection[stack.ItemCollection.Count - frameIndex - 1]; |
||||||
|
|
||||||
|
string currentName = item.MethodName; |
||||||
|
|
||||||
|
if (i == 0) { |
||||||
|
fn = currentName; |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
if (fn == currentName) |
||||||
|
continue; |
||||||
|
else { |
||||||
|
canContinue = false; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
if (canContinue) |
||||||
|
frameIndex++; |
||||||
|
} |
||||||
|
|
||||||
|
// remove last [frameIndex] and create a new ThreadStack as the parent of what remained in the children
|
||||||
|
var threadIds = new List<uint>(); |
||||||
|
var parentItems = new Stack<ExpandoObject>(); |
||||||
|
int j = 0; |
||||||
|
while (frameIndex > 0) { |
||||||
|
for (int i = 0 ; i < listOfCurrentStacks.Count; ++i) { |
||||||
|
var stack = listOfCurrentStacks[i]; |
||||||
|
int indexToRemove = stack.ItemCollection.Count - 1; |
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
dynamic d_item = stack.ItemCollection[indexToRemove]; |
||||||
|
string name = d_item.MethodName; |
||||||
|
#endif
|
||||||
|
if (i == 0) |
||||||
|
parentItems.Push(stack.ItemCollection[indexToRemove]); |
||||||
|
if (i == j) |
||||||
|
threadIds.AddRange(stack.ThreadIds); |
||||||
|
|
||||||
|
stack.ItemCollection.RemoveAt(indexToRemove); |
||||||
|
} |
||||||
|
j++; |
||||||
|
frameIndex--; |
||||||
|
} |
||||||
|
// remove stacks with no items
|
||||||
|
for (int i = listOfCurrentStacks.Count - 1; i >= 0; --i) { |
||||||
|
var stack = listOfCurrentStacks[i]; |
||||||
|
if (stack.ItemCollection.Count == 0) |
||||||
|
listOfCurrentStacks.Remove(stack); |
||||||
|
} |
||||||
|
|
||||||
|
// create new parent stack
|
||||||
|
ThreadStack commonParent = new ThreadStack(); |
||||||
|
commonParent.ThreadIds = threadIds; |
||||||
|
commonParent.ItemCollection = parentItems.ToObservable(); |
||||||
|
commonParent.Process = debuggedProcess; |
||||||
|
commonParent.IsSelected = commonParent.ThreadIds.Contains(debuggedProcess.SelectedThread.ID); |
||||||
|
// add new children
|
||||||
|
foreach (var stack in listOfCurrentStacks) { |
||||||
|
if (stack.ItemCollection.Count == 0) |
||||||
|
{ |
||||||
|
currentThreadStacks.Remove(stack); |
||||||
|
continue; |
||||||
|
} |
||||||
|
dynamic item = stack.ItemCollection[stack.ItemCollection.Count - 1]; |
||||||
|
stack.ThreadStackParent = commonParent; |
||||||
|
string currentName = item.MethodName; |
||||||
|
var newList = new List<ThreadStack>(); |
||||||
|
newList.Add(stack); |
||||||
|
|
||||||
|
commonFrameThreads.Add(currentName, newList); |
||||||
|
} |
||||||
|
|
||||||
|
commonParent.ThreadStackChildren = listOfCurrentStacks.ToArray(); |
||||||
|
commonFrameThreads[frameName].Clear(); |
||||||
|
commonFrameThreads[frameName].Add(commonParent); |
||||||
|
currentThreadStacks.Add(commonParent); |
||||||
|
|
||||||
|
// exit and retry
|
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
if (isOver) |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void CreateThreadStack(Thread thread) |
||||||
|
{ |
||||||
|
var items = CreateItems(thread); |
||||||
|
if (items.Count == 0) |
||||||
|
return; |
||||||
|
|
||||||
|
ThreadStack threadStack = new ThreadStack(); |
||||||
|
threadStack.ThreadIds = new List<uint>(); |
||||||
|
threadStack.ThreadIds.Add(thread.ID); |
||||||
|
threadStack.Process = debuggedProcess; |
||||||
|
currentThreadStacks.Add(threadStack); |
||||||
|
|
||||||
|
threadStack.ItemCollection = items; |
||||||
|
if (debuggedProcess.SelectedThread != null) |
||||||
|
threadStack.IsSelected = threadStack.ThreadIds.Contains(debuggedProcess.SelectedThread.ID); |
||||||
|
} |
||||||
|
|
||||||
|
private ObservableCollection<ExpandoObject> CreateItems(Thread thread) |
||||||
|
{ |
||||||
|
bool lastItemIsExternalMethod = false; |
||||||
|
var result = new ObservableCollection<ExpandoObject>(); |
||||||
|
foreach (StackFrame frame in thread.GetCallstack(100)) { |
||||||
|
dynamic obj = new ExpandoObject(); |
||||||
|
string fullName; |
||||||
|
if (frame.HasSymbols) { |
||||||
|
// Show the method in the list
|
||||||
|
fullName = frame.GetMethodName(); |
||||||
|
lastItemIsExternalMethod = false; |
||||||
|
obj.FontWeight = FontWeights.Normal; |
||||||
|
obj.Foreground = Brushes.Black; |
||||||
|
} else { |
||||||
|
// Show [External methods] in the list
|
||||||
|
if (lastItemIsExternalMethod) continue; |
||||||
|
fullName = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ExternalMethods").Trim(); |
||||||
|
obj.FontWeight = FontWeights.Normal; |
||||||
|
obj.Foreground = Brushes.Gray; |
||||||
|
lastItemIsExternalMethod = true; |
||||||
|
} |
||||||
|
|
||||||
|
obj.Image = null; |
||||||
|
obj.MethodName = fullName; |
||||||
|
|
||||||
|
result.Add(obj); |
||||||
|
} |
||||||
|
|
||||||
|
Utils.DoEvents(debuggedProcess); |
||||||
|
|
||||||
|
return result; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
internal static class StackFrameExtensions |
||||||
|
{ |
||||||
|
internal static string GetMethodName(this StackFrame frame) |
||||||
|
{ |
||||||
|
StringBuilder name = new StringBuilder(); |
||||||
|
name.Append(frame.MethodInfo.DeclaringType.FullName); |
||||||
|
name.Append('.'); |
||||||
|
name.Append(frame.MethodInfo.Name); |
||||||
|
|
||||||
|
return name.ToString(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
internal static class ParallelStackExtensions |
||||||
|
{ |
||||||
|
internal static ObservableCollection<T> ToObservable<T>(this Stack<T> stack) |
||||||
|
{ |
||||||
|
if (stack == null) |
||||||
|
throw new NullReferenceException("Stack is null!"); |
||||||
|
|
||||||
|
var result = new ObservableCollection<T>(); |
||||||
|
while (stack.Count > 0) |
||||||
|
result.Add(stack.Pop()); |
||||||
|
|
||||||
|
return result; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,37 @@ |
|||||||
|
// 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 QuickGraph; |
||||||
|
using GraphSharp.Algorithms.Layout; |
||||||
|
using GraphSharp.Algorithms.Layout.Contextual; |
||||||
|
using GraphSharp.Algorithms.Layout.Simple.Tree; |
||||||
|
using GraphSharp.Controls; |
||||||
|
|
||||||
|
namespace Debugger.AddIn.Pads.ParallelPad |
||||||
|
{ |
||||||
|
public class ParallelStacksEdge : QuickGraph.Edge<ThreadStack> |
||||||
|
{ |
||||||
|
public ParallelStacksEdge(ThreadStack source, ThreadStack target) : base(source, target) |
||||||
|
{ } |
||||||
|
} |
||||||
|
|
||||||
|
public class ParallelStacksGraph : BidirectionalGraph<ThreadStack, ParallelStacksEdge> |
||||||
|
{ |
||||||
|
public ParallelStacksGraph() |
||||||
|
{ } |
||||||
|
} |
||||||
|
|
||||||
|
public class ParallelStacksGraphLayout : GraphLayout<ThreadStack, ParallelStacksEdge, ParallelStacksGraph> |
||||||
|
{ |
||||||
|
public ParallelStacksGraphLayout() |
||||||
|
{ |
||||||
|
var par = new SimpleTreeLayoutParameters(); |
||||||
|
par.LayerGap = 30; |
||||||
|
par.VertexGap = 50; |
||||||
|
par.Direction = LayoutDirection.BottomToTop; |
||||||
|
par.SpanningTreeGeneration = SpanningTreeGeneration.DFS; |
||||||
|
|
||||||
|
this.LayoutParameters = par; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,113 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<UserControl |
||||||
|
x:Class="Debugger.AddIn.Pads.ParallelPad.ThreadStack" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||||
|
Width="Auto" |
||||||
|
Height="Auto" |
||||||
|
Background="Transparent"> |
||||||
|
<Border |
||||||
|
x:Name="BorderParent" |
||||||
|
BorderBrush="Black" |
||||||
|
BorderThickness="3" |
||||||
|
CornerRadius="5" |
||||||
|
Height="Auto"> |
||||||
|
<StackPanel |
||||||
|
Background="Transparent" |
||||||
|
Margin="-5"> |
||||||
|
<Border |
||||||
|
Height="23" |
||||||
|
Margin="5,5,5,0" |
||||||
|
CornerRadius="5,5,0,0" |
||||||
|
BorderBrush="Transparent"> |
||||||
|
<Border.Background> |
||||||
|
<LinearGradientBrush |
||||||
|
StartPoint="0,0.5" |
||||||
|
EndPoint="1,0.5"> |
||||||
|
<GradientStop |
||||||
|
Color="#FFE2F6FE" |
||||||
|
Offset="0" /> |
||||||
|
<GradientStop |
||||||
|
Color="White" |
||||||
|
Offset="1" /> |
||||||
|
</LinearGradientBrush> |
||||||
|
</Border.Background> |
||||||
|
<TextBlock |
||||||
|
VerticalAlignment="Center" |
||||||
|
x:Name="HeaderText" |
||||||
|
Margin="2" |
||||||
|
HorizontalAlignment="Center" /> |
||||||
|
</Border> |
||||||
|
<DataGrid |
||||||
|
Background="Transparent" |
||||||
|
Margin="5,0,5,5" |
||||||
|
x:Name="datagrid" |
||||||
|
VerticalScrollBarVisibility="Disabled" |
||||||
|
HorizontalScrollBarVisibility="Disabled" |
||||||
|
GridLinesVisibility="None" |
||||||
|
RowHeight="18" |
||||||
|
SelectionMode="Single" |
||||||
|
SelectionUnit="FullRow" |
||||||
|
ItemsSource="{Binding}" |
||||||
|
AutoGenerateColumns="False" |
||||||
|
CanUserAddRows="False" |
||||||
|
HeadersVisibility="None" |
||||||
|
BorderThickness="0" |
||||||
|
MouseDoubleClick="Datagrid_MouseDoubleClick" |
||||||
|
MouseRightButtonUp="Datagrid_MouseRightButtonUp"> |
||||||
|
<DataGrid.CellStyle> |
||||||
|
<Style |
||||||
|
TargetType="{x:Type DataGridCell}"> |
||||||
|
<Setter Property="Background" Value="White"/> |
||||||
|
<Setter |
||||||
|
Property="Focusable" |
||||||
|
Value="false" /> |
||||||
|
<Setter |
||||||
|
Property="BorderThickness" |
||||||
|
Value="0" /> |
||||||
|
<Style.Triggers> |
||||||
|
<Trigger |
||||||
|
Property="IsSelected" |
||||||
|
Value="True"> |
||||||
|
<!-- disable selection highlight --> |
||||||
|
<Setter |
||||||
|
Property="Foreground" |
||||||
|
Value="Black" /> |
||||||
|
<Setter |
||||||
|
Property="Background" |
||||||
|
Value="{x:Null}" /> |
||||||
|
</Trigger> |
||||||
|
</Style.Triggers> |
||||||
|
</Style> |
||||||
|
</DataGrid.CellStyle> |
||||||
|
<DataGrid.Columns> |
||||||
|
<DataGridTemplateColumn> |
||||||
|
<DataGridTemplateColumn.CellTemplate> |
||||||
|
<DataTemplate> |
||||||
|
<Border BorderBrush="Gray" BorderThickness="0,1,1,0" Width="25" Height="22"> |
||||||
|
<Image VerticalAlignment="Center" HorizontalAlignment="Center" |
||||||
|
Source="{Binding Image}" /> |
||||||
|
</Border> |
||||||
|
</DataTemplate> |
||||||
|
</DataGridTemplateColumn.CellTemplate> |
||||||
|
</DataGridTemplateColumn> |
||||||
|
<DataGridTemplateColumn |
||||||
|
Width="Auto"> |
||||||
|
<DataGridTemplateColumn.CellTemplate> |
||||||
|
<DataTemplate> |
||||||
|
<Border BorderBrush="Gray" BorderThickness="0,1,0,0"> |
||||||
|
<TextBlock Margin="5,0,10,0" |
||||||
|
VerticalAlignment="Center" |
||||||
|
FontFamily="Khmer UI" |
||||||
|
FontSize="12" |
||||||
|
Text="{Binding Path=MethodName}" |
||||||
|
FontWeight="{Binding Path=FontWeight}" |
||||||
|
Foreground="{Binding Path=Foreground}" |
||||||
|
/> |
||||||
|
</Border> |
||||||
|
</DataTemplate> |
||||||
|
</DataGridTemplateColumn.CellTemplate> |
||||||
|
</DataGridTemplateColumn> |
||||||
|
</DataGrid.Columns> |
||||||
|
</DataGrid> |
||||||
|
</StackPanel> |
||||||
|
</Border> |
||||||
|
</UserControl> |
@ -0,0 +1,154 @@ |
|||||||
|
// 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.Generic; |
||||||
|
using System.Collections.ObjectModel; |
||||||
|
using System.Dynamic; |
||||||
|
using System.Windows; |
||||||
|
using System.Windows.Controls; |
||||||
|
using System.Windows.Input; |
||||||
|
using System.Windows.Media; |
||||||
|
|
||||||
|
namespace Debugger.AddIn.Pads.ParallelPad |
||||||
|
{ |
||||||
|
public partial class ThreadStack : UserControl |
||||||
|
{ |
||||||
|
public static SolidColorBrush SelectedBrush = new SolidColorBrush(Color.FromRgb(84, 169, 255)); |
||||||
|
|
||||||
|
public static readonly DependencyProperty IsSelectedProperty = |
||||||
|
DependencyProperty.Register("IsSelected", typeof(bool), typeof(ThreadStack), |
||||||
|
new FrameworkPropertyMetadata()); |
||||||
|
|
||||||
|
private ObservableCollection<ExpandoObject> itemCollection = new ObservableCollection<ExpandoObject>(); |
||||||
|
|
||||||
|
public ThreadStack() |
||||||
|
{ |
||||||
|
InitializeComponent(); |
||||||
|
} |
||||||
|
|
||||||
|
internal bool IsAdded { get; set; } |
||||||
|
|
||||||
|
public Process Process { get; set; } |
||||||
|
|
||||||
|
public bool IsSelected { |
||||||
|
get { return (bool)GetValue(IsSelectedProperty); } |
||||||
|
set { |
||||||
|
if (value) { |
||||||
|
BorderParent.BorderBrush = SelectedBrush; |
||||||
|
BorderParent.BorderThickness = new Thickness(5); |
||||||
|
} |
||||||
|
else { |
||||||
|
BorderParent.BorderBrush = Brushes.Black; |
||||||
|
BorderParent.BorderThickness = new Thickness(3); |
||||||
|
} |
||||||
|
|
||||||
|
SetValue(IsSelectedProperty, value); |
||||||
|
|
||||||
|
SelectParent(value); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
public ThreadStack ThreadStackParent { get; set; } |
||||||
|
|
||||||
|
public ThreadStack[] ThreadStackChildren { get; set; } |
||||||
|
|
||||||
|
public List<uint> ThreadIds { get; set; } |
||||||
|
|
||||||
|
public ObservableCollection<ExpandoObject> ItemCollection { |
||||||
|
get { |
||||||
|
return itemCollection; |
||||||
|
} |
||||||
|
|
||||||
|
set { |
||||||
|
itemCollection = value; |
||||||
|
this.datagrid.ItemsSource = itemCollection; |
||||||
|
|
||||||
|
if (ThreadIds.Count > 1) |
||||||
|
this.HeaderText.Text = ThreadIds.Count.ToString() + " Threads"; |
||||||
|
else |
||||||
|
this.HeaderText.Text = "1 Thread"; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void SelectParent(bool isSelected) |
||||||
|
{ |
||||||
|
var ts = this.ThreadStackParent; |
||||||
|
while(ts != null) { |
||||||
|
ts.IsSelected = isSelected; |
||||||
|
ts = ts.ThreadStackParent; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void Datagrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) |
||||||
|
{ |
||||||
|
if (Process.IsRunning) return; |
||||||
|
|
||||||
|
dynamic selectedItem = datagrid.SelectedItem; |
||||||
|
if (selectedItem != null) { |
||||||
|
if (ThreadIds.Count > 1) { |
||||||
|
datagrid.ContextMenu = CreateContextMenu(selectedItem); |
||||||
|
datagrid.ContextMenu.IsOpen = true; |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
SelectFrame(ThreadIds[0], selectedItem); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void SelectFrame(uint threadId, ExpandoObject selectedItem) |
||||||
|
{ |
||||||
|
var thread = Process.Threads.Find(t => t.ID == threadId); |
||||||
|
if (thread == null) |
||||||
|
return; |
||||||
|
dynamic obj = selectedItem; |
||||||
|
Process.SelectedThread = thread; |
||||||
|
foreach(var frame in thread.Callstack) |
||||||
|
{ |
||||||
|
if (frame.GetMethodName() == obj.MethodName) |
||||||
|
{ |
||||||
|
Process.SelectedThread.SelectedStackFrame = frame; |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
Process.OnPaused(); |
||||||
|
} |
||||||
|
|
||||||
|
void Datagrid_MouseRightButtonUp(object sender, MouseButtonEventArgs e) |
||||||
|
{ |
||||||
|
if (Process.IsRunning) return; |
||||||
|
|
||||||
|
dynamic selectedItem = datagrid.SelectedItem; |
||||||
|
if (selectedItem == null) |
||||||
|
return; |
||||||
|
|
||||||
|
datagrid.ContextMenu = CreateContextMenu(selectedItem); |
||||||
|
datagrid.ContextMenu.IsOpen = true; |
||||||
|
} |
||||||
|
|
||||||
|
ContextMenu CreateContextMenu(ExpandoObject item) |
||||||
|
{ |
||||||
|
dynamic obj = item; |
||||||
|
|
||||||
|
var menu = new ContextMenu(); |
||||||
|
foreach (var id in ThreadIds) |
||||||
|
{ |
||||||
|
MenuItem m = new MenuItem(); |
||||||
|
m.IsCheckable = true; |
||||||
|
m.IsChecked = id == Process.SelectedThread.ID; |
||||||
|
m.Checked += delegate(object sender, RoutedEventArgs e) { |
||||||
|
var menuItem = e.OriginalSource as MenuItem; |
||||||
|
SelectFrame((uint)menuItem.Tag, item); |
||||||
|
}; |
||||||
|
m.Tag = id; |
||||||
|
m.Header = id.ToString() + ":" + obj.MethodName; |
||||||
|
|
||||||
|
menu.Items.Add(m); |
||||||
|
} |
||||||
|
|
||||||
|
return menu; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Binary file not shown.
Loading…
Reference in new issue