Skip to content

Commit 7f690f4

Browse files
committed
Merge branch 'fd5' of https://github.com/fdorg/flashdevelop into fd5
2 parents 0bd74e3 + b7b440b commit 7f690f4

File tree

12 files changed

+119
-49
lines changed

12 files changed

+119
-49
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using PluginCore.Localization;
3+
using flash.tools.debugger.expression;
4+
5+
namespace FlashDebugger.Controls.DataTree
6+
{
7+
public class ErrorNode : DataNode
8+
{
9+
10+
private string _value;
11+
public override string Value
12+
{
13+
get { return _value; }
14+
set { throw new NotSupportedException(); }
15+
}
16+
17+
public override bool IsLeaf
18+
{
19+
get { return true; }
20+
}
21+
22+
public ErrorNode(string text, Exception ex)
23+
: base(text)
24+
{
25+
_value = ex.Message;
26+
}
27+
28+
}
29+
}

External/Plugins/FlashDebugger/Controls/DataTree/ScalarNode.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,15 @@ public override string Value
1515
set { throw new NotSupportedException(); }
1616
}
1717

18-
public ScalarNode(string text, string value)
19-
: base(text)
18+
public override bool IsLeaf
2019
{
21-
m_Value = value;
20+
get { return true; }
2221
}
2322

24-
public override bool IsLeaf
23+
public ScalarNode(string text, string value)
24+
: base(text)
2525
{
26-
get
27-
{
28-
return true;
29-
}
26+
m_Value = value;
3027
}
3128

3229
}

External/Plugins/FlashDebugger/Controls/DataTreeControl.cs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public DataTreeControl(bool watchMode)
7070
NameNodeTextBox.EditorHided += NameNodeTextBox_EditorHided;
7171
NameNodeTextBox.IsEditEnabledValueNeeded += NameNodeTextBox_IsEditEnabledValueNeeded;
7272
NameNodeTextBox.LabelChanged += NameNodeTextBox_LabelChanged;
73+
_tree.KeyDown += Tree_KeyDown;
7374
_tree.NodeMouseClick += Tree_NameNodeMouseClick;
7475
}
7576

@@ -114,9 +115,10 @@ void NameNodeTextBox_DrawText(object sender, DrawEventArgs e)
114115
try
115116
{
116117
if (e.Node.NextNode == null && e.Node.Level == 1 && !addingNewExpression)
117-
{
118118
e.Font = new Font(e.Font, FontStyle.Italic);
119-
}
119+
else if (e.Node.Tag is ErrorNode)
120+
e.TextColor = e.Node.IsSelected ? Color.White : Color.Gray;
121+
120122
}
121123
catch (Exception) { }
122124
}
@@ -174,6 +176,16 @@ void NameNodeTextBox_LabelChanged(object sender, LabelEventArgs e)
174176
if (!newExp) node.Text = e.OldLabel;
175177
}
176178

179+
void Tree_KeyDown(object sender, KeyEventArgs e)
180+
{
181+
if (e.KeyCode == Keys.Delete)
182+
{
183+
var node = _tree.SelectedNode;
184+
if (node != null && node.Level == 1 && node.NextNode != null)
185+
PanelsHelper.watchUI.RemoveElement(Tree.SelectedNode.Index);
186+
}
187+
}
188+
177189
void Tree_NameNodeMouseClick(object sender, TreeNodeAdvMouseEventArgs e)
178190
{
179191
if (e.Node.Level == 1 && e.Control == NameNodeTextBox && !e.Node.CanExpand &&
@@ -248,12 +260,15 @@ void ValueNodeTextBox_DrawText(object sender, DrawEventArgs e)
248260
{
249261
try
250262
{
251-
VariableNode node = e.Node.Tag as VariableNode;
252-
FlashInterface flashInterface = PluginMain.debugManager.FlashInterface;
253-
if (node != null && node.Variable != null && node.Variable.hasValueChanged(flashInterface.Session))
263+
VariableNode variableNode = e.Node.Tag as VariableNode;
264+
if (variableNode != null)
254265
{
255-
e.TextColor = Color.Red;
266+
FlashInterface flashInterface = PluginMain.debugManager.FlashInterface;
267+
if (variableNode.Variable != null && variableNode.Variable.hasValueChanged(flashInterface.Session))
268+
e.TextColor = Color.Red;
256269
}
270+
else if (e.Node.Tag is ErrorNode)
271+
e.TextColor = e.Node.IsSelected ? Color.White : Color.Gray;
257272
}
258273
catch (NullReferenceException) { }
259274
}
@@ -319,7 +334,7 @@ private void WatchItemClick(Object sender, EventArgs e)
319334
DataNode node = Tree.SelectedNode.Tag as DataNode;
320335
if (watchMode)
321336
{
322-
PanelsHelper.watchUI.RemoveElement(Tree.SelectedNode.Row);
337+
PanelsHelper.watchUI.RemoveElement(Tree.SelectedNode.Index);
323338
}
324339
else
325340
{
@@ -333,7 +348,7 @@ void TreeSelectionChanged(Object sender, EventArgs e)
333348
{
334349
item.Enabled = (Tree.SelectedNode != null);
335350
}
336-
if (watchMode) watchMenuItem.Enabled = (Tree.SelectedNode != null && Tree.SelectedNode.Level == 1);
351+
if (watchMode) watchMenuItem.Enabled = (Tree.SelectedNode != null && Tree.SelectedNode.Level == 1 && Tree.SelectedNode.NextNode != null);
337352
}
338353

339354
void TreeExpanding(Object sender, TreeViewAdvEventArgs e)

External/Plugins/FlashDebugger/Controls/DataTreeModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private Node FindNode(Node root, string path, StringBuilder nodePath)
3333
int initialLength = nodePath.Length;
3434
foreach (Node node in root.Nodes)
3535
{
36-
nodePath = nodePath.Append(node.Text);
36+
nodePath.Append(node.Text);
3737
if (path == nodePath.ToString()) return node;
3838
nodePath.Append(".");
3939
if (path.StartsWith(nodePath.ToString()))

External/Plugins/FlashDebugger/Controls/WatchUI.cs

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace FlashDebugger.Controls
1717
public class WatchUI : DockPanelControl
1818
{
1919
private DataTreeControl treeControl;
20-
private List<String> watches;
20+
private List<string> watches;
2121

2222
public WatchUI()
2323
{
@@ -39,23 +39,25 @@ private void TreeControlResize(Object sender, EventArgs e)
3939
this.treeControl.Tree.Columns[1].Width = w - 8;
4040
}
4141

42-
public bool AddElement(String item)
42+
public bool AddElement(string item)
4343
{
4444
if (watches.Contains(item)) return false;
4545
watches.Add(item);
46+
treeControl.Nodes.Insert(watches.Count - 1, GetExpressionNode(item));
4647
UpdateElements();
4748
return true;
4849
}
4950

5051
public void RemoveElement(string item)
5152
{
52-
watches.Remove(item);
53-
UpdateElements();
53+
if (watches.Remove(item))
54+
UpdateElements();
5455
}
5556

5657
public void RemoveElement(int itemN)
5758
{
58-
if (itemN < watches.Count) RemoveElement(watches[itemN]);
59+
if (itemN < watches.Count) watches.RemoveAt(itemN);
60+
treeControl.Nodes.RemoveAt(itemN);
5961
}
6062

6163
public bool ReplaceElement(string oldItem, string newItem)
@@ -67,7 +69,7 @@ public bool ReplaceElement(string oldItem, string newItem)
6769
else
6870
{
6971
watches[itemN] = newItem;
70-
UpdateElements();
72+
treeControl.Nodes[itemN] = GetExpressionNode(newItem);
7173
}
7274

7375
return true;
@@ -78,36 +80,16 @@ public void Clear()
7880
watches.Clear();
7981
treeControl.Nodes.Clear();
8082
}
81-
83+
8284
public void UpdateElements()
8385
{
8486
treeControl.Tree.BeginUpdate();
8587
treeControl.SaveState();
8688

8789
treeControl.Nodes.Clear();
88-
foreach (String item in watches)
90+
foreach (string item in watches)
8991
{
90-
DataNode node; // todo, introduce new Node types.
91-
try
92-
{
93-
IASTBuilder builder = new ASTBuilder(false);
94-
ValueExp exp = builder.parse(new java.io.StringReader(item));
95-
var ctx = new ExpressionContext(PluginMain.debugManager.FlashInterface.Session, PluginMain.debugManager.FlashInterface.GetFrames()[PluginMain.debugManager.CurrentFrame]);
96-
var obj = exp.evaluate(ctx);
97-
if (obj is Variable)
98-
node = new VariableNode((Variable)obj);
99-
else if (obj is Value)
100-
node = new ValueNode(item, (Value)obj);
101-
else
102-
node = new ScalarNode(item, obj.toString());
103-
node.Tag = item;
104-
}
105-
catch
106-
{
107-
node = new ValueNode(item);
108-
}
109-
node.Text = item;
110-
treeControl.AddNode(node);
92+
treeControl.AddNode(GetExpressionNode(item));
11193
}
11294

11395
treeControl.AddNode(new ValueNode(TextHelper.GetString("Label.AddExpression")));
@@ -116,5 +98,31 @@ public void UpdateElements()
11698
treeControl.Enabled = true;
11799
}
118100

101+
private DataNode GetExpressionNode(string item)
102+
{
103+
DataNode node;
104+
try
105+
{
106+
IASTBuilder builder = new ASTBuilder(false);
107+
ValueExp exp = builder.parse(new java.io.StringReader(item));
108+
var ctx = new ExpressionContext(PluginMain.debugManager.FlashInterface.Session, PluginMain.debugManager.FlashInterface.GetFrames()[PluginMain.debugManager.CurrentFrame]);
109+
var obj = exp.evaluate(ctx);
110+
if (obj is Variable)
111+
node = new VariableNode((Variable)obj);
112+
else if (obj is Value)
113+
node = new ValueNode(item, (Value)obj);
114+
else
115+
node = new ScalarNode(item, obj.toString());
116+
node.Tag = item;
117+
}
118+
catch (Exception ex)
119+
{
120+
node = new ErrorNode(item, ex);
121+
}
122+
node.Text = item;
123+
124+
return node;
125+
}
126+
119127
}
120128
}

External/Plugins/FlashDebugger/Debugger/ExpressionContext.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void assign(java.lang.Object par0, Value par1)
4040
throw new NotSupportedException(TextHelper.GetString("Error.NoScalar"));
4141
}
4242
else
43-
throw new NoSuchVariableException(par0);
43+
throw new NoSuchVariableException(String.Format(TextHelper.GetString("Error.NoSuchVariable"), par0));
4444
}
4545

4646
public Context createContext(java.lang.Object par0)
@@ -73,7 +73,7 @@ public java.lang.Object lookup(java.lang.Object par0)
7373
{
7474
if (v.getName().Equals(par0)) return (java.lang.Object)v;
7575
}
76-
throw new NoSuchVariableException(par0);
76+
throw new NoSuchVariableException(String.Format(TextHelper.GetString("Error.NoSuchVariable"), par0));
7777
}
7878

7979
if ((java.lang.String)par0 == "this")
@@ -105,7 +105,7 @@ public java.lang.Object lookup(java.lang.Object par0)
105105
return (java.lang.Object)session.getGlobal(new java.lang.String(fullClassName));
106106
}
107107
}
108-
throw new NoSuchVariableException(par0);
108+
throw new NoSuchVariableException(String.Format(TextHelper.GetString("Error.NoSuchVariable"), par0));
109109
//Value_.UNDEFINED;
110110
}
111111

External/Plugins/FlashDebugger/FlashDebugger.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
<ItemGroup>
100100
<Compile Include="Controls\DataTree\ContinuedDataNode.cs" />
101101
<Compile Include="Controls\DataTree\DataNode.cs" />
102+
<Compile Include="Controls\DataTree\ErrorNode.cs" />
102103
<Compile Include="Controls\DataTree\ScalarNode.cs" />
103104
<Compile Include="Controls\DataTree\ValueNode.cs" />
104105
<Compile Include="Controls\DataTree\VariableNode.cs" />

PluginCore/PluginCore/Resources/de_DE.resX

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3543,6 +3543,10 @@ Bitte bedenken Sie, dass Sie viele Projektoptionen nicht mehr nutzen können, so
35433543
<value>Variable could not be reevaluated</value>
35443544
<comment>Added after 4.7.0</comment>
35453545
</data>
3546+
<data name="FlashDebugger.Error.NoSuchVariable" xml:space="preserve">
3547+
<value>{0} could not be resolved</value>
3548+
<comment>Added after 4.7.1</comment>
3549+
</data>
35463550
<data name="FlashDebugger.Error.NoScalar" xml:space="preserve">
35473551
<value>Only scalar variables can be modified</value>
35483552
<comment>Added after 4.7.0</comment>

PluginCore/PluginCore/Resources/en_US.resX

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3548,6 +3548,10 @@ Please note that with injection enabled, you will not be able to use many projec
35483548
<value>Variable could not be reevaluated</value>
35493549
<comment>Added after 4.7.0</comment>
35503550
</data>
3551+
<data name="FlashDebugger.Error.NoSuchVariable" xml:space="preserve">
3552+
<value>{0} could not be resolved</value>
3553+
<comment>Added after 4.7.1</comment>
3554+
</data>
35513555
<data name="FlashDebugger.Error.NoScalar" xml:space="preserve">
35523556
<value>Only scalar variables can be modified</value>
35533557
<comment>Added after 4.7.0</comment>

PluginCore/PluginCore/Resources/eu_ES.resX

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3535,6 +3535,10 @@ Kontutan izan injekzioa gaituz gero, ezin izanen diren proiektuaren hainbat auke
35353535
<value>Variable could not be reevaluated</value>
35363536
<comment>Added after 4.7.0</comment>
35373537
</data>
3538+
<data name="FlashDebugger.Error.NoSuchVariable" xml:space="preserve">
3539+
<value>{0} could not be resolved</value>
3540+
<comment>Added after 4.7.1</comment>
3541+
</data>
35383542
<data name="FlashDebugger.Error.NoScalar" xml:space="preserve">
35393543
<value>Only scalar variables can be modified</value>
35403544
<comment>Added after 4.7.0</comment>

0 commit comments

Comments
 (0)