Browse Source

External methods can be show/hidden using callstack context menu

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@403 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
1256609b63
  1. 58
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs
  2. 16
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs

58
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs

@ -10,6 +10,7 @@ using System.Windows.Forms; @@ -10,6 +10,7 @@ using System.Windows.Forms;
using System.Drawing;
using System.CodeDom.Compiler;
using System.Collections;
using System.ComponentModel;
using System.IO;
using System.Diagnostics;
using ICSharpCode.Core;
@ -53,6 +54,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -53,6 +54,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
callStackList.GridLines = false;
callStackList.Activation = ItemActivation.OneClick;
callStackList.Columns.AddRange(new ColumnHeader[] {name, language} );
callStackList.ContextMenuStrip = CreateContextMenuStrip();
callStackList.ItemActivate += new EventHandler(CallStackListItemActivate);
name.Width = 300;
language.Width = 400;
@ -84,6 +86,42 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -84,6 +86,42 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
language.Text = "Language";
}
public bool ShowExternalMethods {
get {
return debugger.Properties.Get("ShowExternalMethods", false);
}
set {
debugger.Properties.Set("ShowExternalMethods", value);
}
}
ContextMenuStrip CreateContextMenuStrip()
{
ContextMenuStrip menu = new ContextMenuStrip();
menu.Opening += FillContextMenuStrip;
return menu;
}
void FillContextMenuStrip(object sender, CancelEventArgs e)
{
ContextMenuStrip menu = sender as ContextMenuStrip;
menu.Items.Clear();
ToolStripMenuItem extMethodsItem;
extMethodsItem = new ToolStripMenuItem();
extMethodsItem.Text = "Show external methods";
extMethodsItem.Checked = ShowExternalMethods;
extMethodsItem.Click +=
delegate {
ShowExternalMethods = !ShowExternalMethods;
RefreshList();
};
menu.Items.Add(extMethodsItem);
e.Cancel = false;
}
void CallStackListItemActivate(object sender, EventArgs e)
{
if (debuggerCore.IsPaused) {
@ -112,11 +150,27 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -112,11 +150,27 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public void RefreshList()
{
bool showExternalMethods = ShowExternalMethods;
bool lastItemIsExternalMethod = false;
callStackList.BeginUpdate();
callStackList.Items.Clear();
if (debuggerCore.CurrentThread != null) {
if (debuggerCore != null && debuggerCore.CurrentThread != null) {
foreach (Function f in debuggerCore.CurrentThread.Callstack) {
ListViewItem item = new ListViewItem(new string[] { f.Name, "" });
ListViewItem item;
if (f.HasSymbols || showExternalMethods) {
// Show the method in the list
item = new ListViewItem(new string[] { f.Name, "" });
lastItemIsExternalMethod = false;
} else {
// Show [External methods] in the list
if (lastItemIsExternalMethod) {
continue;
} else {
item = new ListViewItem(new string[] { "[External methods]", "" });
lastItemIsExternalMethod = true;
}
}
item.Tag = f;
item.ForeColor = f.HasSymbols ? Color.Black : Color.Gray;
callStackList.Items.Add(item);

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

@ -32,9 +32,11 @@ namespace ICSharpCode.SharpDevelop.Services @@ -32,9 +32,11 @@ namespace ICSharpCode.SharpDevelop.Services
public class WindowsDebugger:IDebugger
{
bool useRemotingForThreadInterop = false;
NDebugger debugger;
Properties properties;
bool isDebuggingCache = false;
bool isProcessRunningCache = false;
bool serviceInitialized = false;
@ -55,7 +57,13 @@ namespace ICSharpCode.SharpDevelop.Services @@ -55,7 +57,13 @@ namespace ICSharpCode.SharpDevelop.Services
return debugger;
}
}
public Properties Properties {
get {
return properties;
}
}
public bool ServiceInitialized {
get {
return serviceInitialized;
@ -70,7 +78,7 @@ namespace ICSharpCode.SharpDevelop.Services @@ -70,7 +78,7 @@ namespace ICSharpCode.SharpDevelop.Services
public WindowsDebugger()
{
properties = PropertyService.Get("DebuggerProperties", new Properties());
}
#region IDebugger Members

Loading…
Cancel
Save