public void runUpdate(NodeClick click, UpdateType update) { switch (update) { case UpdateType.UpdatePart: Updater.updatePartBounds(click.PartNode); break; case UpdateType.UpdateMeasuresAtAndAfter: MeasureTreeNode first_node = click.getFirstMeasureNodeByPosition(); if (first_node == null) { return; } MeasureTreeNode prev_node = click.PartNode.getMeasureNodeAtPosition(first_node.getMeasure().Position.Index - 1); List <MeasureTreeNode> to_update = click.PartNode.getMeasureNodesAtAndAfterPosition(first_node.getMeasure().Position.Index); Updater.updateMeasureBoundsAtAndAfter(prev_node, to_update); break; case UpdateType.UpdateMeasure: Updater.updateMeasureBounds(click.MeasureNodes.FirstOrDefault()); break; case UpdateType.UpdateChord: Updater.updateChordBounds(click.ChordNodes.FirstOrDefault()); Updater.updateDrawing(click.ChordNodes.FirstOrDefault()); break; case UpdateType.RedrawPart: Updater.updateRootDrawing(); break; } }
public static void barMeasure(MeasureTreeNode measure_node) { List <IChordBounds> chords = (from node in measure_node.Children orderby(node as ChordTreeNode).getChord().Position.Index select(node as ChordTreeNode).getBounds()).ToList(); TupleGroup current_group = null; foreach (IChordBounds bounds in chords) { bounds.ChordTuple.readInLength(bounds.getChord().Length); if (current_group == null && bounds.ChordTuple.HasTuple) { current_group = new TupleGroup(bounds.ChordTuple); } else if (current_group != null) { bool added = current_group.tryAddTuple(bounds.ChordTuple); bool filled = current_group.checkForFilledTuple(); if (!added) { current_group = (bounds.ChordTuple.HasTuple) ? new TupleGroup(bounds.ChordTuple) : null; } else if (filled) { current_group = null; } } } }
public void updateMeasureBounds(MeasureTreeNode measure_node) { IBounds bounds = measure_node?.Bounds.getBoundsList().FirstOrDefault(); position.resetPositionToMeasureBeginning(bounds); measure_node.updateBounds(); }
protected override void Tree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { MeasureTreeNode node = e.NewValue as MeasureTreeNode; m_IsReadyToSelection = node != null; base.Tree_SelectedItemChanged(sender, e); }
public static void barMeasure(MeasureTreeNode measure_node) { var barred_beats = genBeats(measure_node); foreach (BarredBeat beat in barred_beats) { beat.barBeat(); } }
protected override void TreeNode_MouseDoubleClick(object sender, CustomEventArgs <CustomTreeNode> e) { // Показатели будут конечными узлами. Двойной клик на них будет равнозначен выбору MeasureTreeNode node = e.Args as MeasureTreeNode; if (node != null) { Raise_ApplySelection(); } }
public void updateMeasureBoundsAtAndAfter(MeasureTreeNode prev_measure_node, List <MeasureTreeNode> to_update) { IBounds bounds = prev_measure_node?.Bounds.getBoundsList().LastOrDefault(); position.resetPositionToMeasureEnd(bounds); foreach (MeasureTreeNode measure in to_update) { measure.updateBounds(); } }
public static List <BarredBeat> genBeats(MeasureTreeNode measure_node) { List <IChordBounds> chords = (from node in measure_node.Children orderby(node as ChordTreeNode).getChord().Position.Index select(node as ChordTreeNode).getBounds()).ToList(); int beat_length = (int)measure_node.getMeasure().TimeSignature.BeatType; var beats = new List <BarredBeat>(); while (chords.Any()) { beats.Add(new BarredBeat(beat_length, chords)); } return(beats); }
public MeasureProperties(MeasureTreeNode m, GuiCommandExecutor exec, NodeClick c) : base(c, exec) { measure = m.getMeasure(); resetToDefault(); }
public static void rebarMeasure(MeasureTreeNode measure_node) { MeasureBarrer.barMeasure(measure_node); TupletBarrer.barMeasure(measure_node); measure_node?.refreshVisual(); }