diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj index 801df42a63..f4dc63cdcf 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Debugger.AddIn.csproj @@ -59,6 +59,9 @@ + + + diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.Menu.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.Menu.cs new file mode 100644 index 0000000000..6908b0ea5c --- /dev/null +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.Menu.cs @@ -0,0 +1,100 @@ +// +// +// +// +// $Revision: 1253 $ +// + +using System; +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; +using ICSharpCode.SharpDevelop.Services; + +using Debugger; + +namespace ICSharpCode.SharpDevelop.Gui.Pads +{ + public partial class CallStackPad + { + public bool ShowArgumentNames { + get { + return debugger.Properties.Get("ShowArgumentNames", true); + } + set { + debugger.Properties.Set("ShowArgumentNames", value); + } + } + + public bool ShowArgumentValues { + get { + return debugger.Properties.Get("ShowArgumentValues", true); + } + set { + debugger.Properties.Set("ShowArgumentValues", value); + } + } + + 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 argNamesItem; + argNamesItem = new ToolStripMenuItem(); + argNamesItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowArgumentNames"); + argNamesItem.Checked = ShowArgumentNames; + argNamesItem.Click += delegate { + ShowArgumentNames = !ShowArgumentNames; + RefreshPad(); + }; + + ToolStripMenuItem argValuesItem; + argValuesItem = new ToolStripMenuItem(); + argValuesItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowArgumentValues"); + argValuesItem.Checked = ShowArgumentValues; + argValuesItem.Click += delegate { + ShowArgumentValues = !ShowArgumentValues; + RefreshPad(); + }; + + ToolStripMenuItem extMethodsItem; + extMethodsItem = new ToolStripMenuItem(); + extMethodsItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowExternalMethods"); + extMethodsItem.Checked = ShowExternalMethods; + extMethodsItem.Click += delegate { + ShowExternalMethods = !ShowExternalMethods; + RefreshPad(); + }; + + menu.Items.AddRange(new ToolStripItem[] { + argNamesItem, + argValuesItem, + extMethodsItem + }); + + e.Cancel = false; + } + } +} diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs index 49832b8737..082822c851 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs @@ -20,11 +20,8 @@ using Debugger; namespace ICSharpCode.SharpDevelop.Gui.Pads { - public class CallStackPad : AbstractPadContent + public partial class CallStackPad : DebuggerPad { - WindowsDebugger debugger; - NDebugger debuggerCore; - ListView callStackList; ColumnHeader name = new ColumnHeader(); @@ -36,15 +33,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads } } - public CallStackPad()// : base("${res:MainWindow.Windows.Debug.CallStack}", null) - { - InitializeComponents(); - } - - void InitializeComponents() + protected override void InitializeComponents() { - debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; - callStackList = new ListView(); callStackList.FullRowSelect = true; callStackList.AutoArrange = true; @@ -60,24 +50,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads language.Width = 50; RedrawContent(); - - if (debugger.ServiceInitialized) { - InitializeDebugger(); - } else { - debugger.Initialize += delegate { - InitializeDebugger(); - }; - } - } - - public void InitializeDebugger() - { - debuggerCore = debugger.DebuggerCore; - - debuggerCore.DebuggeeStateChanged += DebuggeeStateChanged; - debuggerCore.DebuggingResumed += DebuggingResumed; - - RefreshList(); } public override void RedrawContent() @@ -86,82 +58,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads language.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.Language"); } - public bool ShowArgumentNames { - get { - return debugger.Properties.Get("ShowArgumentNames", true); - } - set { - debugger.Properties.Set("ShowArgumentNames", value); - } - } - - public bool ShowArgumentValues { - get { - return debugger.Properties.Get("ShowArgumentValues", true); - } - set { - debugger.Properties.Set("ShowArgumentValues", value); - } - } - - public bool ShowExternalMethods { - get { - return debugger.Properties.Get("ShowExternalMethods", false); - } - set { - debugger.Properties.Set("ShowExternalMethods", value); - } - } - - ContextMenuStrip CreateContextMenuStrip() + + protected override void RegisterDebuggerEvents() { - ContextMenuStrip menu = new ContextMenuStrip(); - menu.Opening += FillContextMenuStrip; - return menu; - } - - void FillContextMenuStrip(object sender, CancelEventArgs e) - { - ContextMenuStrip menu = sender as ContextMenuStrip; - menu.Items.Clear(); - - ToolStripMenuItem argNamesItem; - argNamesItem = new ToolStripMenuItem(); - argNamesItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowArgumentNames"); - argNamesItem.Checked = ShowArgumentNames; - argNamesItem.Click += - delegate { - ShowArgumentNames = !ShowArgumentNames; - RefreshList(); - }; - - ToolStripMenuItem argValuesItem; - argValuesItem = new ToolStripMenuItem(); - argValuesItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowArgumentValues"); - argValuesItem.Checked = ShowArgumentValues; - argValuesItem.Click += - delegate { - ShowArgumentValues = !ShowArgumentValues; - RefreshList(); - }; - - ToolStripMenuItem extMethodsItem; - extMethodsItem = new ToolStripMenuItem(); - extMethodsItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.CallStack.ShowExternalMethods"); - extMethodsItem.Checked = ShowExternalMethods; - extMethodsItem.Click += - delegate { - ShowExternalMethods = !ShowExternalMethods; - RefreshList(); - }; - - menu.Items.AddRange(new ToolStripItem[] { - argNamesItem, - argValuesItem, - extMethodsItem - }); - - e.Cancel = false; + debuggerCore.DebuggeeStateChanged += delegate { RefreshPad(); }; + debuggerCore.DebuggingResumed += delegate { RefreshPad(); }; } void CallStackListItemActivate(object sender, EventArgs e) @@ -179,18 +80,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads MessageBox.Show("You can not switch functions while the debugger is running.", "Function switch"); } } - - void DebuggeeStateChanged(object sender, DebuggerEventArgs e) - { - RefreshList(); - } - - void DebuggingResumed(object sender, DebuggerEventArgs e) - { - RefreshList(); - } - public void RefreshList() + public override void RefreshPad() { bool showArgumentNames = ShowArgumentNames; bool showArgumentValues = ShowArgumentValues; diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/DebuggerPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/DebuggerPad.cs new file mode 100644 index 0000000000..ecbb249341 --- /dev/null +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/DebuggerPad.cs @@ -0,0 +1,60 @@ +// +// +// +// +// $Revision: 1064 $ +// + +using System; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Services; + +using Debugger; + +namespace ICSharpCode.SharpDevelop.Gui.Pads +{ + public abstract class DebuggerPad: AbstractPadContent + { + protected WindowsDebugger debugger; + protected NDebugger debuggerCore; + + public DebuggerPad() + { + debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + + InitializeComponents(); + + if (debugger.ServiceInitialized) { + InitializeDebugger(); + } else { + debugger.Initialize += delegate { + InitializeDebugger(); + }; + } + } + + protected virtual void InitializeComponents() + { + + } + + void InitializeDebugger() + { + debuggerCore = debugger.DebuggerCore; + + RegisterDebuggerEvents(); + + RefreshPad(); + } + + protected virtual void RegisterDebuggerEvents() + { + + } + + public virtual void RefreshPad() + { + + } + } +} diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs index 110d07b163..2ac8227057 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs @@ -19,11 +19,8 @@ using Debugger; namespace ICSharpCode.SharpDevelop.Gui.Pads { - public class ExceptionHistoryPad : AbstractPadContent + public class ExceptionHistoryPad : DebuggerPad { - WindowsDebugger debugger; - NDebugger debuggerCore; - ListView exceptionHistoryList; ColumnHeader time = new ColumnHeader(); @@ -36,15 +33,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads } } - public ExceptionHistoryPad() + protected override void InitializeComponents() { - InitializeComponents(); - } - - void InitializeComponents() - { - debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; - exceptionHistoryList = new ListView(); exceptionHistoryList.FullRowSelect = true; exceptionHistoryList.AutoArrange = true; @@ -60,25 +50,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads time.Width = 80; RedrawContent(); - - if (debugger.ServiceInitialized) { - InitializeDebugger(); - } else { - debugger.Initialize += delegate { - InitializeDebugger(); - }; - } } - public void InitializeDebugger() - { - debuggerCore = debugger.DebuggerCore; - - debugger.ExceptionHistoryModified += new EventHandler(ExceptionHistoryModified); - - RefreshList(); - } - public override void RedrawContent() { time.Text = ResourceService.GetString("MainWindow.Windows.Debug.ExceptionHistory.Time"); @@ -86,6 +59,12 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads location.Text = ResourceService.GetString("AddIns.HtmlHelp2.Location"); } + + protected override void RegisterDebuggerEvents() + { + debugger.ExceptionHistoryModified += delegate { RefreshPad(); }; + } + void ExceptionHistoryListItemActivate(object sender, EventArgs e) { SourcecodeSegment nextStatement = ((Debugger.Exception)(exceptionHistoryList.SelectedItems[0].Tag)).Location; @@ -115,13 +94,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads }*/ } } - - void ExceptionHistoryModified(object sender, EventArgs e) - { - RefreshList(); - } - public void RefreshList() + public override void RefreshPad() { exceptionHistoryList.BeginUpdate(); exceptionHistoryList.Items.Clear(); diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs index 328bbaa214..072661368a 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs @@ -19,11 +19,8 @@ using Debugger; namespace ICSharpCode.SharpDevelop.Gui.Pads { - public class LoadedModulesPad : AbstractPadContent + public class LoadedModulesPad : DebuggerPad { - WindowsDebugger debugger; - NDebugger debuggerCore; - ListView loadedModulesList; ColumnHeader name = new ColumnHeader(); @@ -41,16 +38,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads return loadedModulesList; } } - - public LoadedModulesPad() //: base("${res:MainWindow.Windows.Debug.Modules}", null) - { - InitializeComponents(); - } - - void InitializeComponents() + + protected override void InitializeComponents() { - debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; - loadedModulesList = new ListView(); loadedModulesList.FullRowSelect = true; loadedModulesList.AutoArrange = true; @@ -70,24 +60,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads information.Width = 130; RedrawContent(); - - if (debugger.ServiceInitialized) { - InitializeDebugger(); - } else { - debugger.Initialize += delegate { - InitializeDebugger(); - }; - } - } - - public void InitializeDebugger() - { - debuggerCore = debugger.DebuggerCore; - - debuggerCore.ModuleLoaded += new EventHandler(AddModule); - debuggerCore.ModuleUnloaded += new EventHandler(RemoveModule); - - RefreshList(); } public override void RedrawContent() @@ -101,8 +73,15 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads timestamp.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.TimestampColumn}"); information.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.InformationColumn}"); } + + + protected override void RegisterDebuggerEvents() + { + debuggerCore.ModuleLoaded += AddModule; + debuggerCore.ModuleUnloaded += RemoveModule; + } - void RefreshList() + public override void RefreshPad() { loadedModulesList.Items.Clear(); foreach(Module m in debuggerCore.Modules) { diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs index d052ca1a83..8e709e4851 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs @@ -20,11 +20,8 @@ using System.Collections.Generic; namespace ICSharpCode.SharpDevelop.Gui.Pads { - public class LocalVarPad : AbstractPadContent + public class LocalVarPad : DebuggerPad { - WindowsDebugger debugger; - NDebugger debuggerCore; - TreeListView localVarList; ColumnHeader name = new ColumnHeader(); @@ -37,15 +34,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads } } - public LocalVarPad() //: base("${res:MainWindow.Windows.Debug.Local}", null) - { - InitializeComponents(); - } - - void InitializeComponents() + protected override void InitializeComponents() { - debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; - //iconsService = (ClassBrowserIconsService)ServiceManager.Services.GetService(typeof(ClassBrowserIconsService)); localVarList = new TreeListView(); localVarList.SmallImageList = DebuggerIcons.ImageList; @@ -65,14 +55,13 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads RedrawContent(); - - if (debugger.ServiceInitialized) { - InitializeDebugger(); - } else { - debugger.Initialize += delegate { - InitializeDebugger(); - }; - } + } + + public override void RedrawContent() + { + name.Text = ResourceService.GetString("Global.Name"); + val.Text = ResourceService.GetString("Dialog.HighlightingEditor.Properties.Value"); + type.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.TypeColumn"); } // This is a walkarond for a visual issue @@ -81,13 +70,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads localVarList.Visible = true; } - public void InitializeDebugger() + + protected override void RegisterDebuggerEvents() { - debuggerCore = debugger.DebuggerCore; - debuggerCore.DebuggeeStateChanged += delegate { debuggerCore.LocalVariables.Update(); }; - + } + + public override void RefreshPad() + { localVarList.BeginUpdate(); + localVarList.Items.Clear(); AddVariableCollectionToTree(debuggerCore.LocalVariables, localVarList.Items); localVarList.EndUpdate(); } @@ -109,13 +101,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads tree.Add(newItem); } - - public override void RedrawContent() - { - name.Text = ResourceService.GetString("Global.Name"); - val.Text = ResourceService.GetString("Dialog.HighlightingEditor.Properties.Value"); - type.Text = ResourceService.GetString("ResourceEditor.ResourceEdit.TypeColumn"); - } private void localVarList_BeforeExpand(object sender, TreeListViewCancelEventArgs e) { diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.Menu.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.Menu.cs new file mode 100644 index 0000000000..2ff067a778 --- /dev/null +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.Menu.cs @@ -0,0 +1,76 @@ +// +// +// +// +// $Revision: 1253 $ +// + +using System; +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; +using ICSharpCode.SharpDevelop.Services; + +using Debugger; + +namespace ICSharpCode.SharpDevelop.Gui.Pads +{ + public partial class RunningThreadsPad + { + ContextMenuStrip CreateContextMenuStrip() + { + ContextMenuStrip menu = new ContextMenuStrip(); + menu.Opening += FillContextMenuStrip; + return menu; + } + + void FillContextMenuStrip(object sender, CancelEventArgs e) + { + ListView.SelectedListViewItemCollection items = runningThreadsList.SelectedItems; + + if (items.Count == 0) { + e.Cancel = true; + return; + } + + ListViewItem item = items[0]; + + ContextMenuStrip menu = sender as ContextMenuStrip; + menu.Items.Clear(); + + ToolStripMenuItem freezeItem; + freezeItem = new ToolStripMenuItem(); + freezeItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.Threads.Freeze"); + freezeItem.Checked = (item.Tag as Thread).Suspended; + freezeItem.Click += + delegate { + ListView.SelectedListViewItemCollection selItems = runningThreadsList.SelectedItems; + if (selItems.Count == 0) { + return; + } + bool suspended = (selItems[0].Tag as Thread).Suspended; + + if (!debuggerCore.IsPaused) { + MessageBox.Show("You can not freeze or thaw thread while the debugger is running.", "Thread freeze"); + return; + } + + foreach(ListViewItem i in selItems) { + (i.Tag as Thread).Suspended = !suspended; + } + RefreshPad(); + }; + + menu.Items.AddRange(new ToolStripItem[] { + freezeItem, + }); + + e.Cancel = false; + } + } +} diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs index 9c1444b460..25512651a5 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs @@ -20,11 +20,8 @@ using Debugger; namespace ICSharpCode.SharpDevelop.Gui.Pads { - public class RunningThreadsPad : AbstractPadContent + public partial class RunningThreadsPad : DebuggerPad { - WindowsDebugger debugger; - NDebugger debuggerCore; - ListView runningThreadsList; ColumnHeader id = new ColumnHeader(); @@ -38,16 +35,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads return runningThreadsList; } } - - public RunningThreadsPad() //: base("${res:MainWindow.Windows.Debug.Threads}", null) - { - InitializeComponents(); - } - - void InitializeComponents() - { - debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + protected override void InitializeComponents() + { runningThreadsList = new ListView(); runningThreadsList.FullRowSelect = true; runningThreadsList.AutoArrange = true; @@ -66,26 +56,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads breaked.Width = 80; RedrawContent(); - - if (debugger.ServiceInitialized) { - InitializeDebugger(); - } else { - debugger.Initialize += delegate { - InitializeDebugger(); - }; - } - } - - public void InitializeDebugger() - { - debuggerCore = debugger.DebuggerCore; - - debuggerCore.DebuggeeStateChanged += DebuggeeStateChanged; - debuggerCore.ThreadStarted += ThreadStarted; - debuggerCore.ThreadStateChanged += ThreadStateChanged; - debuggerCore.ThreadExited += ThreadExited; - - RefreshList(); } public override void RedrawContent() @@ -97,58 +67,22 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads breaked.Text = ResourceService.GetString("MainWindow.Windows.Debug.Threads.Frozen"); } - ContextMenuStrip CreateContextMenuStrip() - { - ContextMenuStrip menu = new ContextMenuStrip(); - menu.Opening += FillContextMenuStrip; - return menu; - } - - void FillContextMenuStrip(object sender, CancelEventArgs e) + + protected override void RegisterDebuggerEvents() { - ListView.SelectedListViewItemCollection items = runningThreadsList.SelectedItems; - - if (items.Count == 0) { - e.Cancel = true; - return; - } - - ListViewItem item = items[0]; - - ContextMenuStrip menu = sender as ContextMenuStrip; - menu.Items.Clear(); - - ToolStripMenuItem freezeItem; - freezeItem = new ToolStripMenuItem(); - freezeItem.Text = ResourceService.GetString("MainWindow.Windows.Debug.Threads.Freeze"); - freezeItem.Checked = (item.Tag as Thread).Suspended; - freezeItem.Click += - delegate { - ListView.SelectedListViewItemCollection selItems = runningThreadsList.SelectedItems; - if (selItems.Count == 0) { - return; - } - bool suspended = (selItems[0].Tag as Thread).Suspended; - - if (!debuggerCore.IsPaused) { - MessageBox.Show("You can not freeze or thaw thread while the debugger is running.", "Thread freeze"); - return; - } - - foreach(ListViewItem i in selItems) { - (i.Tag as Thread).Suspended = !suspended; - } - RefreshList(); + debuggerCore.DebuggeeStateChanged += delegate { RefreshPad(); }; + debuggerCore.ThreadStarted += delegate(object sender, ThreadEventArgs e) { + AddThread(e.Thread); + }; + debuggerCore.ThreadStateChanged += delegate(object sender, ThreadEventArgs e) { + RefreshThread(e.Thread); + }; + debuggerCore.ThreadExited += delegate(object sender, ThreadEventArgs e) { + RemoveThread(e.Thread); }; - - menu.Items.AddRange(new ToolStripItem[] { - freezeItem, - }); - - e.Cancel = false; } - void RefreshList() + public override void RefreshPad() { foreach (Thread t in debuggerCore.Threads) { RefreshThread(t); @@ -164,28 +98,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads } else { MessageBox.Show("You can not switch threads while the debugger is running.", "Thread switch"); } - } - - void DebuggeeStateChanged(object sender, DebuggerEventArgs e) - { - RefreshList(); - } - - void ThreadStarted(object sender, ThreadEventArgs e) - { - AddThread(e.Thread); - } - - void ThreadStateChanged(object sender, ThreadEventArgs e) - { - RefreshThread(e.Thread); - } - - void ThreadExited(object sender, ThreadEventArgs e) - { - RemoveThread(e.Thread); - } - + } void AddThread(Thread thread) {