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. 10
      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;
using System.Drawing; using System.Drawing;
using System.CodeDom.Compiler; using System.CodeDom.Compiler;
using System.Collections; using System.Collections;
using System.ComponentModel;
using System.IO; using System.IO;
using System.Diagnostics; using System.Diagnostics;
using ICSharpCode.Core; using ICSharpCode.Core;
@ -53,6 +54,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
callStackList.GridLines = false; callStackList.GridLines = false;
callStackList.Activation = ItemActivation.OneClick; callStackList.Activation = ItemActivation.OneClick;
callStackList.Columns.AddRange(new ColumnHeader[] {name, language} ); callStackList.Columns.AddRange(new ColumnHeader[] {name, language} );
callStackList.ContextMenuStrip = CreateContextMenuStrip();
callStackList.ItemActivate += new EventHandler(CallStackListItemActivate); callStackList.ItemActivate += new EventHandler(CallStackListItemActivate);
name.Width = 300; name.Width = 300;
language.Width = 400; language.Width = 400;
@ -84,6 +86,42 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
language.Text = "Language"; 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) void CallStackListItemActivate(object sender, EventArgs e)
{ {
if (debuggerCore.IsPaused) { if (debuggerCore.IsPaused) {
@ -112,11 +150,27 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public void RefreshList() public void RefreshList()
{ {
bool showExternalMethods = ShowExternalMethods;
bool lastItemIsExternalMethod = false;
callStackList.BeginUpdate(); callStackList.BeginUpdate();
callStackList.Items.Clear(); callStackList.Items.Clear();
if (debuggerCore.CurrentThread != null) { if (debuggerCore != null && debuggerCore.CurrentThread != null) {
foreach (Function f in debuggerCore.CurrentThread.Callstack) { 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.Tag = f;
item.ForeColor = f.HasSymbols ? Color.Black : Color.Gray; item.ForeColor = f.HasSymbols ? Color.Black : Color.Gray;
callStackList.Items.Add(item); callStackList.Items.Add(item);

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

@ -35,6 +35,8 @@ namespace ICSharpCode.SharpDevelop.Services
NDebugger debugger; NDebugger debugger;
Properties properties;
bool isDebuggingCache = false; bool isDebuggingCache = false;
bool isProcessRunningCache = false; bool isProcessRunningCache = false;
bool serviceInitialized = false; bool serviceInitialized = false;
@ -56,6 +58,12 @@ namespace ICSharpCode.SharpDevelop.Services
} }
} }
public Properties Properties {
get {
return properties;
}
}
public bool ServiceInitialized { public bool ServiceInitialized {
get { get {
return serviceInitialized; return serviceInitialized;
@ -70,7 +78,7 @@ namespace ICSharpCode.SharpDevelop.Services
public WindowsDebugger() public WindowsDebugger()
{ {
properties = PropertyService.Get("DebuggerProperties", new Properties());
} }
#region IDebugger Members #region IDebugger Members

Loading…
Cancel
Save