Browse Source

WatchPad now allows changing nodes while debugging

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4061 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Siegfried Pammer 16 years ago
parent
commit
99ccdb033d
  1. 81
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/WatchPad.cs

81
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/WatchPad.cs

@ -79,12 +79,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
MessageBox.Show("You can not set name to an empty string!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show("You can not set name to an empty string!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else else
{ {
if (((TreeViewVarNode)node).Content is ValueNode) if (((TreeViewVarNode)node).Content is ValueNode) {
WatchPad.Instance.Watches.RemoveAll(item => item.Name == ((ValueNode)((TreeViewVarNode)node).Content).Name);
((ValueNode)((TreeViewVarNode)node).Content).SetName(value.ToString()); ((ValueNode)((TreeViewVarNode)node).Content).SetName(value.ToString());
else { } else {
if (((TreeViewVarNode)node).Content is TextNode) if (((TreeViewVarNode)node).Content is TextNode) {
WatchPad.Instance.Watches.RemoveAll(item => item.Name == ((TextNode)((TreeViewVarNode)node).Content).Name);
((TextNode)((TreeViewVarNode)node).Content).SetName(value.ToString()); ((TextNode)((TreeViewVarNode)node).Content).SetName(value.ToString());
}
} }
WatchPad.Instance.Watches.Add(new TextNode(value as string));
} }
} }
public override void MouseDown(TreeNodeAdvMouseEventArgs args) public override void MouseDown(TreeNodeAdvMouseEventArgs args)
@ -171,42 +176,42 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
watchList.NodeControls.Add(typeControl); watchList.NodeControls.Add(typeControl);
watchList.AutoRowHeight = true; watchList.AutoRowHeight = true;
watchList.MouseDoubleClick += new MouseEventHandler(watchList_DoubleClick); watchList.MouseDoubleClick += new MouseEventHandler(watchList_DoubleClick);
watchList.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/WatchPad/ContextMenu"); watchList.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/WatchPad/ContextMenu");
watchList.AllowDrop = true; watchList.AllowDrop = true;
watchList.DragEnter += new DragEventHandler(watchList_DragEnter); watchList.DragEnter += new DragEventHandler(watchList_DragEnter);
watchList.DragDrop += new DragEventHandler(watchList_DragDrop); watchList.DragDrop += new DragEventHandler(watchList_DragDrop);
watches = new List<TextNode>(); watches = new List<TextNode>();
RedrawContent(); RedrawContent();
} }
void watchList_DragDrop(object sender, DragEventArgs e) void watchList_DragDrop(object sender, DragEventArgs e)
{ {
watchList.BeginUpdate(); watchList.BeginUpdate();
TextNode text = new TextNode(e.Data.GetData(DataFormats.StringFormat).ToString()); TextNode text = new TextNode(e.Data.GetData(DataFormats.StringFormat).ToString());
TreeViewVarNode node = new TreeViewVarNode(this.debuggedProcess, this.watchList, text); TreeViewVarNode node = new TreeViewVarNode(this.debuggedProcess, this.watchList, text);
watches.Add(text); watches.Add(text);
watchList.Root.Children.Add(node); watchList.Root.Children.Add(node);
watchList.EndUpdate(); watchList.EndUpdate();
node.IsSelected = true; node.IsSelected = true;
this.RefreshPad(); this.RefreshPad();
} }
void watchList_DragEnter(object sender, DragEventArgs e) void watchList_DragEnter(object sender, DragEventArgs e)
{ {
if(e.Data.GetDataPresent(DataFormats.StringFormat)) { if(e.Data.GetDataPresent(DataFormats.StringFormat)) {
e.Effect = DragDropEffects.Copy; e.Effect = DragDropEffects.Copy;
} }
else { else {
e.Effect = DragDropEffects.None; e.Effect = DragDropEffects.None;
} }
} }
void watchList_DoubleClick(object sender, MouseEventArgs e) void watchList_DoubleClick(object sender, MouseEventArgs e)
{ {
if (watchList.SelectedNode == null) if (watchList.SelectedNode == null)
@ -226,7 +231,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
if (nfo.Control is WatchItemName) if (nfo.Control is WatchItemName)
((EditableControl)nfo.Control).MouseUp(new TreeNodeAdvMouseEventArgs(e)); ((EditableControl)nfo.Control).MouseUp(new TreeNodeAdvMouseEventArgs(e));
} }
} }
} }
@ -281,17 +285,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
Utils.DoEvents(debuggedProcess); Utils.DoEvents(debuggedProcess);
List<TreeViewVarNode> nodes = new List<TreeViewVarNode>(); List<TreeViewVarNode> nodes = new List<TreeViewVarNode>();
foreach (TreeViewVarNode nod in this.watchList.Root.Children) { foreach (var nod in watches) {
try { try {
LoggingService.Info("Evaluating: " + (string.IsNullOrEmpty(nod.Content.Name) ? "is null or empty!" : nod.Content.Name)); LoggingService.Info("Evaluating: " + (string.IsNullOrEmpty(nod.Name) ? "is null or empty!" : nod.Name));
Value val = AstEvaluator.Evaluate(nod.Content.Name, SupportedLanguage.CSharp, debuggedProcess.SelectedStackFrame); Value val = AstEvaluator.Evaluate(nod.Name, SupportedLanguage.CSharp, debuggedProcess.SelectedStackFrame);
ValueNode valNode = new ValueNode(val); ValueNode valNode = new ValueNode(val);
valNode.SetName(nod.Content.Name); valNode.SetName(nod.Name);
nodes.Add(new TreeViewVarNode(debuggedProcess, watchList, valNode)); nodes.Add(new TreeViewVarNode(debuggedProcess, watchList, valNode));
} catch (GetValueException) { } catch (GetValueException) {
string error = String.Format(StringParser.Parse("${res:MainWindow.Windows.Debug.Watch.InvalidExpression}"), nod.Content.Name); string error = String.Format(StringParser.Parse("${res:MainWindow.Windows.Debug.Watch.InvalidExpression}"), nod.Name);
ErrorInfoNode infoNode = new ErrorInfoNode(nod.Content.Name, error); ErrorInfoNode infoNode = new ErrorInfoNode(nod.Name, error);
nodes.Add(new TreeViewVarNode(debuggedProcess, watchList, infoNode)); nodes.Add(new TreeViewVarNode(debuggedProcess, watchList, infoNode));
} }
} }

Loading…
Cancel
Save