Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/PushProgramTreeView.cs @ 15017

Last change on this file since 15017 was 15017, checked in by pkimmesw, 7 years ago

#2665 Fixed Benchmark Problem Definition, Converted LoopExpressions to stateless expressions, Added several unit test to ensure funcionality, Fixed UI bugs

File size: 1.5 KB
Line 
1using System.Windows.Forms;
2
3namespace HeuristicLab.Problems.ProgramSynthesis.Push.Views {
4  using System.Collections.Generic;
5  using System.Linq;
6
7  using HeuristicLab.Problems.ProgramSynthesis.Push.Expressions;
8
9  public partial class PushProgramTreeView : TreeView {
10    private const string PushProgramStringFormat = "List {0}@{1}";
11    private const string EmptyList = "Empty List";
12
13    public PushProgramTreeView() {
14      InitializeComponent();
15    }
16
17    public void LoadExpressions(IEnumerable<Expression> expressions) {
18      Nodes.Clear();
19      AddExpressions(expressions);
20    }
21
22    public void AddExpressions(IEnumerable<Expression> expressions) {
23      var nodes = expressions.Select(ToTreeNode).ToArray();
24      Nodes.AddRange(nodes);
25    }
26
27    private TreeNode ToTreeNode(Expression expression) {
28      var node = new TreeNode {
29        Text = GetNodeText(expression),
30        Tag = expression
31      };
32
33      if (expression.IsProgram) {
34        var program = (PushProgram)expression;
35        var subNodes = program.Expressions.Reverse().Select(ToTreeNode).ToArray();
36
37        node.Nodes.AddRange(subNodes);
38      }
39
40      return node;
41    }
42
43    private string GetNodeText(Expression expression) {
44      if (expression.IsProgram) {
45        var program = (PushProgram)expression;
46
47        if (program.IsEmpty)
48          return EmptyList;
49
50        return string.Format(PushProgramStringFormat, program.TotalExpressionCount, program.Depth);
51      }
52
53      return expression.StringRepresentation;
54    }
55  }
56}
Note: See TracBrowser for help on using the repository browser.