Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/26/11 15:11:48 (13 years ago)
Author:
mkommend
Message:

#1479: Corrected handling of GroupSymbols.

Location:
branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolView.Designer.cs

    r6109 r6299  
    4747      this.initialFrequencyLabel = new System.Windows.Forms.Label();
    4848      this.initialFrequencyTextBox = new System.Windows.Forms.TextBox();
     49      this.checkBoxEnabled = new System.Windows.Forms.CheckBox();
    4950      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
    5051      this.SuspendLayout();
     
    7374      // initialFrequencyTextBox
    7475      //
    75       this.initialFrequencyTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
    76                   | System.Windows.Forms.AnchorStyles.Right)));
     76      this.initialFrequencyTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
     77            | System.Windows.Forms.AnchorStyles.Right)));
    7778      this.errorProvider.SetIconAlignment(this.initialFrequencyTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
    7879      this.initialFrequencyTextBox.Location = new System.Drawing.Point(93, 26);
     
    8485      this.initialFrequencyTextBox.Validated += new System.EventHandler(this.initialFrequencyTextBox_Validated);
    8586      //
     87      // checkBoxEnabled
     88      //
     89      this.checkBoxEnabled.AutoSize = true;
     90      this.checkBoxEnabled.Location = new System.Drawing.Point(93, 52);
     91      this.checkBoxEnabled.Name = "checkBoxEnabled";
     92      this.checkBoxEnabled.Size = new System.Drawing.Size(65, 17);
     93      this.checkBoxEnabled.TabIndex = 5;
     94      this.checkBoxEnabled.Text = "Enabled";
     95      this.checkBoxEnabled.UseVisualStyleBackColor = true;
     96      this.checkBoxEnabled.CheckedChanged += new System.EventHandler(this.checkBoxEnabled_CheckedChanged);
     97      //
    8698      // SymbolView
    8799      //
     
    90102      this.Controls.Add(this.initialFrequencyTextBox);
    91103      this.Controls.Add(this.initialFrequencyLabel);
     104      this.Controls.Add(this.checkBoxEnabled);
    92105      this.Name = "SymbolView";
    93       this.Size = new System.Drawing.Size(320, 51);
     106      this.Size = new System.Drawing.Size(320, 75);
     107      this.Controls.SetChildIndex(this.checkBoxEnabled, 0);
    94108      this.Controls.SetChildIndex(this.initialFrequencyLabel, 0);
    95109      this.Controls.SetChildIndex(this.initialFrequencyTextBox, 0);
     
    107121    protected System.Windows.Forms.Label initialFrequencyLabel;
    108122    protected System.Windows.Forms.TextBox initialFrequencyTextBox;
     123    private System.Windows.Forms.CheckBox checkBoxEnabled;
    109124
    110125  }
  • branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolView.cs

    r6233 r6299  
    5757    protected override void SetEnabledStateOfControls() {
    5858      base.SetEnabledStateOfControls();
    59       initialFrequencyTextBox.Enabled = Content != null;
     59      initialFrequencyTextBox.Enabled = Content != null || Locked;
    6060      initialFrequencyTextBox.ReadOnly = ReadOnly;
     61      checkBoxEnabled.Enabled = Content != null || Locked || ReadOnly;
    6162    }
    6263
     
    9394      }
    9495    }
     96
     97    private void checkBoxEnabled_CheckedChanged(object sender, EventArgs e) {
     98      Content.Enabled = checkBoxEnabled.Checked;
     99    }
    95100    #endregion
    96101
     
    99104      if (Content == null) {
    100105        initialFrequencyTextBox.Text = string.Empty;
     106        checkBoxEnabled.Checked = false;
    101107      } else {
    102108        initialFrequencyTextBox.Text = Content.InitialFrequency.ToString();
     109        checkBoxEnabled.Checked = Content.Enabled;
    103110      }
    104111      SetEnabledStateOfControls();
    105112    }
    106113    #endregion
     114
    107115  }
    108116}
  • branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionGrammarEditorView.cs

    r6285 r6299  
    100100    private void RebuildSymbolsTreeView() {
    101101      symbolsTreeView.Nodes.Clear();
    102       var start = new TreeNode();
    103       var symbols = new DummySymbol("Symbols");
    104       start.Name = "Symbols";
    105       start.Text = "Symbols";
    106       start.Tag = symbols;
    107       start.Checked = true;
    108       symbolsTreeView.Nodes.Add(start);
     102      var symbols = Content.Symbols.ToList();
     103      var groupSymbols = symbols.OfType<GroupSymbol>().ToList();
     104      var topLevelSymbols = Content.Symbols.Where(s => !groupSymbols.Any(g => g.Symbols.Contains(s)));
     105      AddChildTreeNodes(symbolsTreeView.Nodes, topLevelSymbols);
    109106
    110       foreach (ISymbol symbol in Content.Symbols.Where(s => !(s is IReadOnlySymbol))) {
     107      RebuildImageList();
     108      symbolsTreeView.ExpandAll();
     109    }
     110
     111    private void AddChildTreeNodes(TreeNodeCollection collection, IEnumerable<ISymbol> symbols) {
     112      foreach (ISymbol symbol in symbols) {
    111113        var node = new TreeNode();
    112114        node.Name = symbol.Name;
    113115        node.Text = symbol.Name;
    114116        node.Tag = symbol;
    115         node.Checked = !symbol.InitialFrequency.IsAlmost(0.0);
    116         start.Nodes.Add(node);
     117        node.Checked = symbol.Enabled;
     118        collection.Add(node);
     119        var groupSymbol = symbol as GroupSymbol;
     120        if (groupSymbol != null) AddChildTreeNodes(node.Nodes, groupSymbol.Symbols);
    117121      }
    118       RebuildImageList();
    119       symbolsTreeView.ExpandAll();
    120122    }
    121123
     
    134136      if (e.Action != TreeViewAction.Unknown) {
    135137        DeregisterContentEvents();
    136         foreach (var symbol in IterateTreeNodes(e.Node).Select(n => n.Tag).OfType<ISymbol>()) {
    137           if (e.Node.Checked) symbol.InitialFrequency = 1.0;
    138           else symbol.InitialFrequency = 0.0;
    139         }
     138        var symbol = (ISymbol)e.Node.Tag;
     139        symbol.Enabled = e.Node.Checked;
    140140        RegisterContentEvents();
    141141        Content_Changed(Content, EventArgs.Empty);
     
    176176    protected virtual void RebuildImageList() {
    177177      symbolsTreeView.ImageList.Images.Clear();
    178       foreach (TreeNode treeNode in symbolsTreeView.Nodes) {
     178      foreach (TreeNode treeNode in IterateTreeNodes()) {
    179179        var symbol = (ISymbol)treeNode.Tag;
    180180        symbolsTreeView.ImageList.Images.Add(symbol == null ? HeuristicLab.Common.Resources.VSImageLibrary.Nothing : symbol.ItemImage);
     
    183183    }
    184184  }
     185    #endregion
    185186
    186187  [NonDiscoverableType]
     
    190191    public override IDeepCloneable Clone(Cloner cloner) { return new DummySymbol(this, cloner); }
    191192  }
    192 
    193     #endregion
    194193}
  • branches/GP.Grammar.Editor/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.4/SymbolicExpressionGrammarView.cs

    r6233 r6299  
    9090          if (!(symbol is IReadOnlySymbol)) {
    9191            symbol.Changed += new EventHandler(symbol_Changed);
    92             symbols.Add(symbol, symbol.InitialFrequency > 0.0);
     92            symbols.Add(symbol, symbol.Enabled);
    9393          }
    9494        }
     
    101101    private void symbol_Changed(object sender, EventArgs e) {
    102102      ISymbol symbol = (ISymbol)sender;
    103       symbols.SetItemCheckedState(symbol, symbol.InitialFrequency > 0.0);
     103      symbols.SetItemCheckedState(symbol, symbol.Enabled);
    104104    }
    105105
    106106    private void symbols_CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<ISymbol>> e) {
    107107      ICheckedItemList<ISymbol> checkedItemList = (ICheckedItemList<ISymbol>)sender;
    108       foreach (var indexedItem in e.Items) {
    109         if (checkedItemList.ItemChecked(indexedItem.Value)) {
    110           indexedItem.Value.InitialFrequency = 1.0;
    111         } else {
    112           indexedItem.Value.InitialFrequency = 0.0;
    113         }
    114       }
     108      foreach (var indexedItem in e.Items)
     109        indexedItem.Value.Enabled = checkedItemList.ItemChecked(indexedItem.Value);
    115110    }
    116111    private void ClearSymbols() {
Note: See TracChangeset for help on using the changeset viewer.