Changeset 15032 for branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/ExpressionSelectionView.cs
- Timestamp:
- 06/12/17 14:11:43 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.PushGP/HeuristicLab.Problems.ProgramSynthesis/Push/Views/ExpressionSelectionView.cs
r15017 r15032 5 5 6 6 namespace HeuristicLab.Problems.ProgramSynthesis.Push.Views { 7 using System;8 7 using System.Collections.Generic; 9 8 using System.Linq; … … 11 10 12 11 using HeuristicLab.Problems.ProgramSynthesis.Push.Configuration; 12 using HeuristicLab.Problems.ProgramSynthesis.Push.Extensions; 13 13 14 14 using Stack; … … 52 52 53 53 if (e.Node.Parent == null) { 54 Content.SetStack(stackType, e.Node.Checked , true, false);54 Content.SetStack(stackType, e.Node.Checked); 55 55 SetStackNodeText(e.Node); 56 56 foreach (var subNode in e.Node.Nodes.OfType<TreeNode>().Where(n => n.Checked != e.Node.Checked)) … … 62 62 // enable/disable stack if no or at least one expression is enabled 63 63 if ((e.Node.Checked && !e.Node.Parent.Checked) || 64 (!e.Node.Checked && !e.Node.Parent.Nodes.OfType<TreeNode>().Any(n => n.Checked))) { 65 Content.SetStack(stackType, e.Node.Checked, false, false); 64 (!e.Node.Checked && e.Node.Parent.Nodes.OfType<TreeNode>().All(n => !n.Checked))) { 66 65 e.Node.Parent.Checked = e.Node.Checked; 67 66 } … … 90 89 expressionsTreeView.Nodes.Clear(); 91 90 92 var treeNodes = GetTreeNodes(Content.EnabledExpressions).ToArray(); 91 var treeNodes = GetTreeNodes(Content.EnabledExpressions) 92 .OrderBy(x => x.Text) 93 .ToArray(); 94 93 95 expressionsTreeView.Nodes.AddRange(treeNodes); 94 96 } 95 97 96 private IEnumerable<TreeNode> GetTreeNodes(I List<string> enabledExpressions) {98 private IEnumerable<TreeNode> GetTreeNodes(IReadOnlyList<string> enabledExpressions) { 97 99 foreach (var stackType in ExpressionTable.StackTypeToNamesTable.Keys) { 98 100 var stackTreeNode = new TreeNode { … … 107 109 108 110 var expressionNodes = stackExpressions 111 .Where(name => { 112 var type = ExpressionTable.NameToTypeTable[name]; 113 var attribute = ExpressionTable.TypeToAttributeTable[type]; 114 115 return !attribute.IsHidden; 116 }) 109 117 .OrderBy(name => name) 110 118 .Select(name => new TreeNode { … … 113 121 Checked = enabledStackExpressions.Contains(name), 114 122 }).ToArray(); 123 124 foreach (var node in expressionNodes) { 125 var type = ExpressionTable.NameToTypeTable[node.Text]; 126 var attribute = ExpressionTable.TypeToAttributeTable[type]; 127 128 node.ToolTipText = attribute.Description; 129 } 115 130 116 131 stackTreeNode.Nodes.AddRange(expressionNodes); … … 121 136 122 137 private void SetStackNodeText(TreeNode node) { 123 var stackType = (StackTypes)node.Tag;124 var stackExpressions = ExpressionTable.StackTypeToNamesTable[stackType ];138 var stackTypes = (StackTypes)node.Tag; 139 var stackExpressions = ExpressionTable.StackTypeToNamesTable[stackTypes]; 125 140 var enabledStackExpressions = Content.EnabledExpressions.Intersect(stackExpressions).ToList(); 141 var stackNames = string.Join(", ", stackTypes.ToValues().Select(type => type.ToString()).OrderBy(x => x)); 126 142 127 143 node.Text = string.Format( 128 144 "{0} ({1}/{2})", 129 Enum.GetName(typeof(StackTypes), stackType),145 stackNames, 130 146 enabledStackExpressions.Count, 131 ExpressionTable.StackTypeToNamesTable[stackType].Count);147 stackExpressions.Count); 132 148 } 133 149 }
Note: See TracChangeset
for help on using the changeset viewer.