From 97886eaaffd2217f42600f122b86bf8db7adc1d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kon=C3=AD=C4=8Dek?= Date: Tue, 4 Aug 2009 13:46:30 +0000 Subject: [PATCH] Debugger tooltips - DebuggerTooltipControl is shown in the tooltip. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4590 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Service/WindowsDebugger.cs | 14 ++++--------- .../Project/Src/TreeModel/ExpressionNode.cs | 9 ++++++++- .../Project/Src/TreeModel/TreeNode.cs | 6 +++++- .../Project/Src/Visualizers/ObjectProperty.cs | 2 +- .../Debugger/DebuggerTooltipControl.xaml | 20 +++++++++++-------- .../Debugger/DebuggerTooltipControl.xaml.cs | 13 +++++++++++- .../Src/Services/Debugger/ITreeNode.cs | 2 ++ 7 files changed, 44 insertions(+), 22 deletions(-) diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs index 7fb542c936..fe021d1a63 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs @@ -380,23 +380,17 @@ namespace ICSharpCode.SharpDevelop.Services /// 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) diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ExpressionNode.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ExpressionNode.cs index 8b69c2a191..038f6ce577 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ExpressionNode.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/ExpressionNode.cs @@ -24,7 +24,7 @@ namespace Debugger.AddIn.TreeModel { /// /// 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. /// public class ExpressionNode: TreeNode, ISetText, IContextMenu { @@ -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; diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/TreeNode.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/TreeNode.cs index 27e9ca633e..5b2178e365 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/TreeNode.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/TreeModel/TreeNode.cs @@ -50,7 +50,11 @@ namespace Debugger.AddIn.TreeModel } IEnumerable ITreeNode.ChildNodes { - get { return this.childNodes; } + get { return childNodes; } + } + + public virtual bool HasChildren { + get { return childNodes != null; } } public TreeNode() diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/ObjectProperty.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/ObjectProperty.cs index 40b7b55c78..460789d4e8 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/ObjectProperty.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Visualizers/ObjectProperty.cs @@ -4,8 +4,8 @@ // // $Revision$ // -using ICSharpCode.NRefactory.Ast; using System; +using ICSharpCode.NRefactory.Ast; namespace Debugger.AddIn.Visualizers { diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml b/src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml index 0792407e32..f82adab48d 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml +++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml @@ -130,12 +130,12 @@ - + - - + @@ -153,7 +153,7 @@ - + @@ -165,10 +165,14 @@ --> - - + + + + + + + + diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml.cs b/src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml.cs index 2ae7b1c88f..675700ada8 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerTooltipControl.xaml.cs @@ -27,6 +27,17 @@ namespace ICSharpCode.SharpDevelop.Debugging InitializeComponent(); } + public DebuggerTooltipControl(ITreeNode node) + : this(new ITreeNode[] { node }) + { + } + + public DebuggerTooltipControl(IEnumerable nodes) + : this() + { + this.ItemsSource = nodes; + } + private LazyItemsControl lazyGrid; private IEnumerable itemsSource; @@ -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)); diff --git a/src/Main/Base/Project/Src/Services/Debugger/ITreeNode.cs b/src/Main/Base/Project/Src/Services/Debugger/ITreeNode.cs index f308e43c8a..ba02408b5b 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/ITreeNode.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/ITreeNode.cs @@ -21,5 +21,7 @@ namespace ICSharpCode.SharpDevelop.Debugging string Type { get; } IEnumerable ChildNodes { get; } + + bool HasChildren { get; } } }