Browse Source

Debugger tooltips - DebuggerTooltipControl is shown in the tooltip.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4590 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Martin Koníček 17 years ago
parent
commit
97886eaaff
  1. 14
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs
  2. 9
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ExpressionNode.cs
  3. 6
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/TreeNode.cs
  4. 2
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/ObjectProperty.cs
  5. 20
      src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml
  6. 13
      src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml.cs
  7. 2
      src/Main/Base/Project/Src/Services/Debugger/ITreeNode.cs

14
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs

@ -380,23 +380,17 @@ namespace ICSharpCode.SharpDevelop.Services @@ -380,23 +380,17 @@ namespace ICSharpCode.SharpDevelop.Services
/// </summary>
public object GetTooltipControl(string variableName)
{
ExpressionNode valueNode;
ExpressionNode expressionNode;
try {
Value val = GetValueFromName(variableName);
if (val == null) return null;
valueNode = new ExpressionNode(null, variableName, val.ExpressionTree);
//expressionNode = new ExpressionNode(ExpressionNode.GetImageForLocalVariable(), variableName, val.ExpressionTree);
expressionNode = new ExpressionNode(null, variableName, val.ExpressionTree);
} catch (GetValueException) {
return null;
}
/*try {
currentTooltipRow = new DynamicTreeDebuggerRow(DebuggedProcess, valueNode);
} catch (AbortedBecauseDebuggeeResumedException) {
return null;
}*/
//currentTooltipExpression = valueNode.Expression;
//return new DebuggerGridControl(currentTooltipRow);
return variableName + " = " + valueNode.Text + ", type: " + valueNode.Type;
return new DebuggerTooltipControl(expressionNode);
}
public bool CanSetInstructionPointer(string filename, int line, int column)

9
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ExpressionNode.cs

@ -24,7 +24,7 @@ namespace Debugger.AddIn.TreeModel @@ -24,7 +24,7 @@ namespace Debugger.AddIn.TreeModel
{
/// <summary>
/// Node in the tree which can be defined by a debugger expression.
/// The expression will be lazyly evaluated when needed.
/// The expression will be lazily evaluated when needed.
/// </summary>
public class ExpressionNode: TreeNode, ISetText, IContextMenu
{
@ -75,6 +75,13 @@ namespace Debugger.AddIn.TreeModel @@ -75,6 +75,13 @@ namespace Debugger.AddIn.TreeModel
}
}
public override bool HasChildren {
get {
if (!evaluated) EvaluateExpression();
return base.HasChildren;
}
}
public ExpressionNode(Image image, string name, Expression expression)
{
this.Image = image;

6
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/TreeNode.cs

@ -50,7 +50,11 @@ namespace Debugger.AddIn.TreeModel @@ -50,7 +50,11 @@ namespace Debugger.AddIn.TreeModel
}
IEnumerable<ITreeNode> ITreeNode.ChildNodes {
get { return this.childNodes; }
get { return childNodes; }
}
public virtual bool HasChildren {
get { return childNodes != null; }
}
public TreeNode()

2
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/ObjectProperty.cs

@ -4,8 +4,8 @@ @@ -4,8 +4,8 @@
// <owner name="Martin Koníček" email="martin.konicek@gmail.com"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.NRefactory.Ast;
using System;
using ICSharpCode.NRefactory.Ast;
namespace Debugger.AddIn.Visualizers
{

20
src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml

@ -130,12 +130,12 @@ @@ -130,12 +130,12 @@
<DataTemplate>
<Grid Background="White">
<StackPanel VerticalAlignment="Center">
<ToggleButton x:Name="PropertyExpander" Style="{StaticResource ExpandCollapseToggleStyle}" Click="Expander_Click" Padding="0" Margin="0 0 0 0" />
<ToggleButton x:Name="btnExpander" Style="{StaticResource ExpandCollapseToggleStyle}" Click="btnExpander_Click" Padding="0" Margin="0 0 0 0" />
</StackPanel>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=ShowPropertyButton}" Value="False">
<Setter TargetName="PropertyExpander"
<DataTrigger Binding="{Binding Path=HasChildren}" Value="False">
<Setter TargetName="btnExpander"
Property="Visibility" Value="Hidden"/>
</DataTrigger>
</DataTemplate.Triggers>
@ -153,7 +153,7 @@ @@ -153,7 +153,7 @@
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border BorderBrush="#FFDDDDDD" BorderThickness="0 0 1 0">
<TextBlock Margin="0 0 6 0" Text="{Binding Path=Name, Mode=OneWay}"></TextBlock>
<TextBlock Margin="0 0 6 0" Text="{Binding Path=Name, Mode=OneWay}" VerticalAlignment="Center"></TextBlock>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
@ -165,10 +165,14 @@ @@ -165,10 +165,14 @@
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> -->
<!-- Value -->
<DataGridTextColumn MinWidth="20"
Header="Value" Width="Auto"
Binding="{Binding Path=Value, Mode=OneWay}"/>
<DataGridTemplateColumn MinWidth="20" Header="Text"> <!-- Text (value) -->
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Margin="0 0 6 0" Text="{Binding Path=Text, Mode=OneWay}" VerticalAlignment="Center"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<RepeatButton Name="btnDown" Style="{StaticResource downButtonStyle}" Content="v" Click="BtnDown_Click"></RepeatButton>

13
src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml.cs

@ -27,6 +27,17 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -27,6 +27,17 @@ namespace ICSharpCode.SharpDevelop.Debugging
InitializeComponent();
}
public DebuggerTooltipControl(ITreeNode node)
: this(new ITreeNode[] { node })
{
}
public DebuggerTooltipControl(IEnumerable<ITreeNode> nodes)
: this()
{
this.ItemsSource = nodes;
}
private LazyItemsControl<ITreeNode> lazyGrid;
private IEnumerable<ITreeNode> itemsSource;
@ -69,7 +80,7 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -69,7 +80,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
throw new NotImplementedException();
}
private void Expander_Click(object sender, RoutedEventArgs e)
private void btnExpander_Click(object sender, RoutedEventArgs e)
{
var clickedButton = (ToggleButton)e.OriginalSource;
Point buttonPos = clickedButton.PointToScreen(new Point(0, 0));

2
src/Main/Base/Project/Src/Services/Debugger/ITreeNode.cs

@ -21,5 +21,7 @@ namespace ICSharpCode.SharpDevelop.Debugging @@ -21,5 +21,7 @@ namespace ICSharpCode.SharpDevelop.Debugging
string Type { get; }
IEnumerable<ITreeNode> ChildNodes { get; }
bool HasChildren { get; }
}
}

Loading…
Cancel
Save