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;
            }
        }
Esempio n. 2
0
        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;
                    }
                }
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        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();
            }
        }
Esempio n. 7
0
        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();
            }
        }
Esempio n. 8
0
        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();
 }
Esempio n. 10
0
 public static void rebarMeasure(MeasureTreeNode measure_node)
 {
     MeasureBarrer.barMeasure(measure_node);
     TupletBarrer.barMeasure(measure_node);
     measure_node?.refreshVisual();
 }