Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/15/21 17:00:28 (3 years ago)
Author:
dpiringe
Message:

#3136

  • modified the StructureTemplateView to enable colorful tree nodes of type SubFunctionTreeNode
  • refactored SubFunctionTreeNode, SubFunction and StructureTemplate
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3136_Structural_GP/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/StructureTemplate/StructureTemplateView.cs

    r18067 r18068  
    2424    public StructureTemplateView() {
    2525      InitializeComponent();
    26       errorLabel.Text = "";
    27       treeChart.SymbolicExpressionTreeNodeClicked += TreeChart_SymbolicExpressionTreeNodeClicked;
     26      infoLabel.Text = "";
     27      treeChart.SymbolicExpressionTreeNodeClicked += SymbolicExpressionTreeNodeClicked;
     28     
    2829    }
    2930
    30     private void TreeChart_SymbolicExpressionTreeNodeClicked(object sender, MouseEventArgs e) {
     31    private void SymbolicExpressionTreeNodeClicked(object sender, MouseEventArgs e) {
    3132      var visualTreeNode = sender as VisualTreeNode<ISymbolicExpressionTreeNode>;
    3233      if(visualTreeNode != null) {
    3334        var subFunctionTreeNode = visualTreeNode.Content as SubFunctionTreeNode;
    34         viewHost.Content = subFunctionTreeNode?.SubFunction;
     35        if(Content.SubFunctions.TryGetValue(subFunctionTreeNode.Name, out SubFunction subFunction))
     36          viewHost.Content = subFunction;
    3537      }
    3638    }
     
    3941      base.OnContentChanged();
    4042      if (Content == null) return;
    41 
    4243      expressionInput.Text = Content.Template;
    43       symRegTreeChart.Content = Content.Tree;
    44 
    45       treeChart.Tree = Content.Tree;
    46 
    47       errorLabel.Text = "";
    48      
     44      PaintTree();
     45      infoLabel.Text = "";
    4946    }
    5047
    51     private void parseButton_Click(object sender, EventArgs e) {
     48    private void ParseButtonClick(object sender, EventArgs e) {
    5249      if(!string.IsNullOrEmpty(expressionInput.Text)) {
    5350        try {
    5451          Content.Template = expressionInput.Text;
    55           symRegTreeChart.Content = Content.Tree;
    56           treeChart.Tree = Content.Tree;
    57 
    58           errorLabel.Text = "Template structure successfully parsed.";
    59           errorLabel.ForeColor = Color.DarkGreen;
     52          PaintTree();
     53          infoLabel.Text = "Template structure successfully parsed.";
     54          infoLabel.ForeColor = Color.DarkGreen;
    6055        } catch (Exception ex) {
    61           errorLabel.Text = ex.Message;
    62           errorLabel.ForeColor = Color.DarkRed;
     56          infoLabel.Text = ex.Message;
     57          infoLabel.ForeColor = Color.DarkRed;
    6358        }
    6459      }
    6560    }
    6661
    67     private void expressionInput_TextChanged(object sender, EventArgs e) {
    68       errorLabel.Text = "Unparsed changes! Press parse button to save changes.";
    69       errorLabel.ForeColor = Color.DarkOrange;
     62    private void ExpressionInputTextChanged(object sender, EventArgs e) {
     63      infoLabel.Text = "Unparsed changes! Press parse button to save changes.";
     64      infoLabel.ForeColor = Color.DarkOrange;
    7065    }
    7166
     67
     68    private void PaintTree() {
     69      if(Content != null && Content.Tree != null) {
     70        treeChart.Tree = Content.Tree;
     71        foreach (var n in Content.Tree.IterateNodesPrefix()) {
     72          if (n.Symbol is SubFunctionSymbol) {
     73            var visualNode = treeChart.GetVisualSymbolicExpressionTreeNode(n);
     74            visualNode.FillColor = Color.LightCyan;
     75            visualNode.LineColor = Color.SlateGray;
     76          }
     77        }
     78        treeChart.RepaintNodes();
     79      }
     80    }
    7281  }
    7382}
Note: See TracChangeset for help on using the changeset viewer.