/// <summary> /// Create a ScoreStaffs object for a bar. /// </summary> /// <param name="genome"></param> /// <param name="tempo"></param> /// <param name="barPosition"></param> /// <returns></returns> private ScoreStaffs CreateScoreStaffsBar(Genome genome, string tempo, int barPosition) { // The staffs for the new bar. ScoreStaffs ss = new ScoreStaffs(); ss.Background = Brushes.White; ss.setContent(genome); ss.AddTempoInfo(tempo); if (addEmptyBar == false) { ss.AddIndexTag(barCount + 1); } else { ss.AddIndexTag(barPosition + 1); } ss.borderStaff.BorderThickness = new Thickness(0); ss.borderStaff.BorderBrush = Brushes.Blue; ss.AllowDrop = true; AddScoreStaffsMouseLeftButtonUpEventHandler(ss); AddScoreStaffsDragEnterEventHandler(ss); AddScoreStaffsDropEventHandler(ss); return(ss); }
public void ApplyKeySignature() { KeySignature temp = Parameters.KeySignature; Parameters.KeySignature = LayoutController.StringToEnum <KeySignature>(keySignature + "Maj"); geneticSong.ApplyKeySignature(keySignature); Parameters.KeySignature = temp; int defaultNumberElem = ScoreStaffs.defaultNumberElem; for (int i = 0; i < scores.Count; i++) { ScoreStaffs ss = scores[i]; Grid grid = (Grid)ss.borderStaff.Child; grid.Children.RemoveRange(defaultNumberElem, grid.Children.Count - defaultNumberElem); ss.setContent(geneticSong.songGenomes[i]); ss.AddTempoInfo(geneticSong.tempos[i].ToString()); ss.AddIndexTag(i + 1); } foreach (WrapPanel wp in keySignatures) { ((Image)wp.Children[0]).Source = LayoutController.GetKeySignature(keySignature, Clefs[0].ToString()); ((Image)wp.Children[1]).Source = LayoutController.GetKeySignature(keySignature, Clefs[1].ToString()); } MarkSavedScore(true); }
/// <summary> /// Updates the template of each field individual with the corresponding updated genome information. /// </summary> /// <param name="selected"></param> /// <param name="genomes"></param> private void UpdateFieldContent(List <byte> selected, List <Genome> genomes) { Border b = new Border(); Grid g = new Grid(); CheckBox cb = new CheckBox(); byte popSize = Parameters.PopSize; int defaultNumberElem = ScoreStaffs.defaultNumberElem; for (byte i = 0; i < popSize; i++) { ScoreStaffs ss = (ScoreStaffs)fieldGrid.Children[borderTags[i] + 1]; Grid grid = (Grid)ss.borderStaff.Child; grid.Children.RemoveRange(defaultNumberElem, grid.Children.Count - defaultNumberElem); ss.setContent(genomes[i]); // The selections from a generation are not persisted to the next one. // But the selected genomes which are mutated by the user, remain selected after the mutation. if (!isManuallyMutated) { if (selected.IndexOf(i) != -1) { b = (Border)fieldGrid.Children[borderTags[i]]; g = (Grid)b.Child; cb = (CheckBox)g.Children[2]; cb.IsChecked = false; cb.RaiseEvent(new RoutedEventArgs(CheckBox.UncheckedEvent)); } } } isManuallyMutated = false; }
/// <summary> /// Fills the template of each field individual with the corresponding genome information. /// </summary> private void SetFieldContent() { Border b = new Border(); Grid g = new Grid(); Button button = new Button(); byte popSize = Parameters.PopSize; for (byte i = 0; i < popSize; i++) { ScoreStaffs ss = (ScoreStaffs)fieldGrid.Children[borderTags[i] + 1]; ss.setContent(individuals[i]); // If the individual is supposed to be preserved. if (preserved.IndexOf(i) != -1) { b = (Border)fieldGrid.Children[borderTags[i]]; g = (Grid)b.Child; button = (Button)g.Children[1]; // Trigger a click event on the locking-genome button. button.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); } } }