private void buttonAdd_Click(object sender, RoutedEventArgs e) { var t = new Tempered(); // default values _temperamentControls.AddRow(t, focus: true); // just mark grid as incomplete UpdateTemperamentFromGrid(); UpdateTemperamentRowsAfterValidation(); }
public Tempered[] GetTemperament() { int count = _grid.RowDefinitions.Count; var ts = new Tempered[count]; for (int i = 0; i < ts.Length; ++i) { RowControls cs = GetRowControls(i); ts[i] = new Tempered { rational = GetRowRational(cs), cents = GetRowCents(cs), }; } return(ts); }
public void AddRow(Tempered t, bool focus = false) { int rowIndex = _grid.RowDefinitions.Count; var cs = new RowControls { row = new Rectangle { }, rect = new Rectangle { }, rational = new TextBox { }, cents = new UpDown { }, }; Grid.SetRow(cs.row, rowIndex); Grid.SetColumn(cs.row, 0); Grid.SetColumnSpan(cs.row, 3); Grid.SetRow(cs.rect, rowIndex); Grid.SetColumn(cs.rect, 0); Grid.SetRow(cs.rational, rowIndex); Grid.SetColumn(cs.rational, 1); Grid.SetRow(cs.cents, rowIndex); Grid.SetColumn(cs.cents, 2); cs.row.Classes.Add("row"); cs.rect.Classes.Add("rect"); cs.rational.Classes.Add("rational"); cs.cents.Classes.Add("cents"); _settingInternally = true; AddRowHandlers(cs); _grid.RowDefinitions.Add(new RowDefinition { }); _grid.Children.AddRange(new Control[] { cs.row, cs.rect, cs.rational, cs.cents }); cs.rational.Text = t.rational.FormatFraction(); cs.cents.Value = t.cents; if (focus) { cs.rational.Focus(); } _settingInternally = false; }
public static DrawerSettings Load(XmlReader r) { var s = new DrawerSettings { }; var ts = new List <Tempered>(); while (r.Read()) { if (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "limitPrime": { Rational limitPrime = Rational.Parse(r.ReadElementContentAsString()); // allow to be a rational if (!limitPrime.IsDefault()) { s.limitPrimeIndex = limitPrime.GetHighPrimeIndex(); } break; } case "subgroup": { s.subgroup = Rational.ParseRationals(r.ReadElementContentAsString()); break; } case "narrows": { s.narrows = Rational.ParseRationals(r.ReadElementContentAsString()); s.narrows = NarrowUtils.ValidateNarrows(s.narrows); break; } // case "harmonicityName": s.harmonicityName = r.ReadElementContentAsString(); break; case "rationalCountLimit": s.rationalCountLimit = r.ReadElementContentAsInt(); break; // case "slopeOrigin": s.slopeOrigin = Rational.Parse(r.ReadElementContentAsString()); break; case "slopeChainTurns": s.slopeChainTurns = r.ReadElementContentAsFloat(); break; // //case "degreeCount": s.degreeCount = r.ReadElementContentAsInt(); break; case "degreeThreshold": s.degreeThreshold = r.ReadElementContentAsFloat(); break; // case "selection": s.selection = ParseIntervals(r.ReadElementContentAsString()); break; case "temper": { var t = new Tempered { }; t.rational = Rational.Parse(r.GetAttribute("rational")); float.TryParse(r.GetAttribute("cents"), out t.cents); ts.Add(t); break; } case "temperamentMeasure": s.temperamentMeasure = r.ReadElementContentAsFloat(); break; case "edGrids": s.edGrids = GridDrawer.EDGrid.Parse(r.ReadElementContentAsString()); break; case "pointRadius": s.pointRadiusLinear = r.ReadElementContentAsFloat(); break; } } } if (ts.Count > 0) { s.temperament = ts.ToArray(); } return(s); }