void TestTools::undoSlashRhythm() { QString readFile(DIR + "undoSlashRhythm.mscx"); QString writeFile1("undoSlashRhythm01-test.mscx"); QString reference1(DIR + "undoSlashRhythm01-ref.mscx"); QString writeFile2("undoSlashRhythm02-test.mscx"); QString reference2(DIR + "undoSlashRhythm02-ref.mscx"); Score* score = readScore(readFile); score->doLayout(); // select all score->startCmd(); score->cmdSelectAll(); score->endCmd(); // do score->startCmd(); score->cmdSlashRhythm(); score->endCmd(); QVERIFY(saveCompareScore(score, writeFile1, reference1)); // undo score->undo()->undo(); QVERIFY(saveCompareScore(score, writeFile2, reference2)); delete score; }
void TestTools::undoLockLineBreaks() { QString readFile(DIR + "undoLockLineBreaks.mscx"); QString writeFile1("undoLockLineBreaks01-test.mscx"); QString reference1(DIR + "undoLockLineBreaks01-ref.mscx"); QString writeFile2("undoLockLineBreaks02-test.mscx"); QString reference2(DIR + "undoLockLineBreaks02-ref.mscx"); Score* score = readScore(readFile); score->doLayout(); // select all score->startCmd(); score->cmdSelectAll(); score->endCmd(); // do score->startCmd(); score->addRemoveBreaks(0, true); score->endCmd(); QVERIFY(saveCompareScore(score, writeFile1, reference1)); // undo score->undo()->undo(); QVERIFY(saveCompareScore(score, writeFile2, reference2)); delete score; }
void TestNote::grace() { Score* score = readScore(DIR + "grace.mscx"); score->doLayout(); Chord* chord = score->firstMeasure()->findChord(0, 0); Note* note = chord->upNote(); // create score->setGraceNote(chord, note->pitch(), NoteType::APPOGGIATURA, MScore::division/2); Chord* gc = chord->graceNotes().first(); Note* gn = gc->notes().first(); // Note* n = static_cast<Note*>(writeReadElement(gn)); // QCOMPARE(n->noteType(), NoteType::APPOGGIATURA); // delete n; // tie score->startCmd(); score->select(gn); score->cmdAddTie(); score->endCmd(); // n = static_cast<Note*>(writeReadElement(gn)); // QVERIFY(n->tieFor() != 0); // delete n; // tremolo score->startCmd(); Tremolo* tr = new Tremolo(score); tr->setTremoloType(TremoloType::R16); tr->setParent(gc); tr->setTrack(gc->track()); score->undoAddElement(tr); score->endCmd(); // Chord* c = static_cast<Chord*>(writeReadElement(gc)); // QVERIFY(c->tremolo() != 0); // delete c; // articulation score->startCmd(); Articulation* ar = new Articulation(score); ar->setArticulationType(ArticulationType::Sforzatoaccent); ar->setParent(gc); ar->setTrack(gc->track()); score->undoAddElement(ar); score->endCmd(); // c = static_cast<Chord*>(writeReadElement(gc)); // QVERIFY(c->articulations().size() == 1); // delete c; QVERIFY(saveCompareScore(score, "grace-test.mscx", DIR + "grace-ref.mscx")); }
void TestBarline::barline04() { Score* score = readScore(DIR + "barline04.mscx"); QVERIFY(score); score->doLayout(); score->startCmd(); // 'go' to 5th measure Measure* msr = score->firstMeasure(); for (int i=0; i < 4; i++) msr = msr->nextMeasure(); // check span data of measure-initial start-repeat bar line Segment* seg = msr->findSegment(SegmentType::StartRepeatBarLine, msr->tick()); QVERIFY2(seg != nullptr, "No SegStartRepeatBarLine segment in measure 5."); BarLine* bar = static_cast<BarLine*>(seg->element(0)); QVERIFY2(bar != nullptr, "No start-repeat barline in measure 5."); bar->undoChangeProperty(Pid::BARLINE_SPAN, 2); bar->undoChangeProperty(Pid::BARLINE_SPAN_FROM, 2); bar->undoChangeProperty(Pid::BARLINE_SPAN_TO, 6); score->endCmd(); QVERIFY2(bar->spanStaff() && bar->spanFrom() == 2 && bar->spanTo() == 6, "Wrong span data in start-repeat barline of measure 5."); // check start-repeat bar ine in second staff is gone QVERIFY2(seg->element(1) == nullptr, "Extra start-repeat barline in 2nd staff of measure 5."); // QVERIFY(saveCompareScore(score, "barline04.mscx", DIR + "barline04-ref.mscx")); delete score; }
void TestTools::undoSlashFill() { QString readFile(DIR + "undoSlashFill.mscx"); QString writeFile1("undoSlashFill01-test.mscx"); QString reference1(DIR + "undoSlashFill01-ref.mscx"); QString writeFile2("undoSlashFill02-test.mscx"); QString reference2(DIR + "undoSlashFill02-ref.mscx"); Score* score = readScore(readFile); score->doLayout(); // select Segment* s = score->firstMeasure()->findSegment(Segment::Type::ChordRest, MScore::division * 2); score->selection().setRange(s, score->lastSegment(), 0, 2); // do score->startCmd(); score->cmdSlashFill(); score->endCmd(); QVERIFY(saveCompareScore(score, writeFile1, reference1)); // undo score->undo()->undo(); QVERIFY(saveCompareScore(score, writeFile2, reference2)); delete score; }
void TestTranspose::undoDiatonicTranspose() { QString readFile(DIR + "undoDiatonicTranspose.mscx"); QString writeFile1("undoDiatonicTranspose01-test.mscx"); QString reference1(DIR + "undoDiatonicTranspose01-ref.mscx"); QString writeFile2("undoDiatonicTranspose02-test.mscx"); QString reference2(DIR + "undoDiatonicTranspose02-ref.mscx"); Score* score = readScore(readFile); // select all score->cmdSelectAll(); // transpose diatonic fourth down score->startCmd(); score->transpose(TransposeMode::DIATONICALLY, TransposeDirection::DOWN, 0, 3, true, false, false); score->endCmd(); QVERIFY(saveCompareScore(score, writeFile1, reference1)); // undo score->undo()->undo(); QVERIFY(saveCompareScore(score, writeFile2, reference2)); delete score; }
void InspectorTremoloBar::propertiesClicked() { TremoloBar* b = toTremoloBar(inspector->element()); Score* score = b->score(); score->startCmd(); mscore->currentScoreView()->editTremoloBarProperties(b); score->setLayoutAll(); score->endCmd(); }
void InspectorBend::propertiesClicked() { Bend* b = toBend(inspector->element()); Score* score = b->score(); score->startCmd(); mscore->currentScoreView()->editBendProperties(b); score->setLayoutAll(); score->endCmd(); }
void InspectorElement::apply() { Element* e = inspector->element(); Score* score = e->score(); score->startCmd(); ie->apply(); score->setLayoutAll(true); score->endCmd(); mscore->endCmd(); }
void TestExchangevoices::glissandi() { QString p1 = DIR + "exchangevoices-gliss.mscx"; QVERIFY(score); Score* score = readScore(p1); score->doLayout(); // select all score->startCmd(); score->cmdSelectAll(); score->endCmd(); // do score->startCmd(); score->cmdExchangeVoice(0,1); score->endCmd(); // compare QVERIFY(saveCompareScore(score, "exchangevoices-gliss.mscx", DIR + "exchangevoices-gliss-ref.mscx")); }
void InspectorBarLine::presetDefaultClicked() { BarLine* bl = toBarLine(inspector->element()); Score* score = bl->score(); score->startCmd(); bl->undoResetProperty(P_ID::BARLINE_SPAN); bl->undoResetProperty(P_ID::BARLINE_SPAN_FROM); bl->undoResetProperty(P_ID::BARLINE_SPAN_TO); score->endCmd(); }
void InspectorBarLine::presetTick2Clicked() { BarLine* bl = toBarLine(inspector->element()); Score* score = bl->score(); score->startCmd(); bl->undoChangeProperty(P_ID::BARLINE_SPAN, false); bl->undoChangeProperty(P_ID::BARLINE_SPAN_FROM, BARLINE_SPAN_TICK2_FROM); bl->undoChangeProperty(P_ID::BARLINE_SPAN_TO, BARLINE_SPAN_TICK2_TO); score->endCmd(); }
void InspectorGroupElement::setColor() { if (inspector->el().isEmpty()) return; Score* score = inspector->el().front()->score(); score->startCmd(); for (Element* e : inspector->el()) { if (e->getProperty(P_ID::COLOR) != QVariant(ge.color->color())) e->undoChangeProperty(P_ID::COLOR, ge.color->color()); } score->endCmd(); }
void InspectorGroupElement::setVisible() { if (inspector->el().isEmpty()) return; Score* score = inspector->el().front()->score(); score->startCmd(); for (Element* e : inspector->el()) { if (!e->getProperty(P_ID::VISIBLE).toBool()) e->undoChangeProperty(P_ID::VISIBLE, true); } score->endCmd(); }
void InspectorClef::apply() { Clef* clef = static_cast<Clef*>(inspector->element()); Score* score = clef->score(); score->startCmd(); iElement->apply(); iSegment->apply(); score->setLayoutAll(true); score->endCmd(); mscore->endCmd(); }
void InspectorBarLine::presetShort2Clicked() { BarLine* bl = toBarLine(inspector->element()); Score* score = bl->score(); score->startCmd(); bl->undoChangeProperty(P_ID::BARLINE_SPAN, false); bl->undoChangeProperty(P_ID::BARLINE_SPAN_FROM, BARLINE_SPAN_SHORT2_FROM); int shortDelta = bl->staff() ? (bl->staff()->lines(bl->tick()) - 5) * 2 : 0; bl->undoChangeProperty(P_ID::BARLINE_SPAN_TO, BARLINE_SPAN_SHORT2_TO + shortDelta); score->endCmd(); }
void InspectorBarLine::setAsStaffDefault() { BarLine* bl = toBarLine(inspector->element()); Staff* staff = bl->staff(); Score* score = bl->score(); score->startCmd(); staff->undoChangeProperty(Pid::STAFF_BARLINE_SPAN, bl->getProperty(Pid::BARLINE_SPAN)); staff->undoChangeProperty(Pid::STAFF_BARLINE_SPAN_FROM, bl->getProperty(Pid::BARLINE_SPAN_FROM)); staff->undoChangeProperty(Pid::STAFF_BARLINE_SPAN_TO, bl->getProperty(Pid::BARLINE_SPAN_TO)); if (bl->barLineType() == BarLineType::NORMAL) bl->setGenerated(true); score->endCmd(); }
void TestMeasure::insertMeasureEnd() { Score* score = readScore(DIR + "measure01.mscx"); score->doLayout(); foreach(Excerpt* e, score->excerpts()) e->score()->doLayout(); score->startCmd(); score->insertMeasure(Element::MEASURE, 0); score->endCmd(); QVERIFY(saveCompareScore(score, "measure01-3.mscx", DIR + "measure01-3-ref.mscx")); delete score; }
void InspectorNote::apply() { Note* note = static_cast<Note*>(inspector->element()); Score* score = note->score(); score->startCmd(); iElement->apply(); iNote->apply(); iSegment->apply(); score->setLayoutAll(true); score->endCmd(); mscore->endCmd(); }
void TestMeasure::spanner_a() { Score* score = readScore(DIR + "measure-3.mscx"); score->doLayout(); foreach(Excerpt* e, score->excerpts()) e->score()->doLayout(); Measure* m = score->firstMeasure()->nextMeasure(); score->startCmd(); score->insertMeasure(Element::MEASURE, m); score->endCmd(); QVERIFY(saveCompareScore(score, "measure-4.mscx", DIR + "measure-4-ref.mscx")); delete score; }
void TestMeasure::insertMeasureBegin() { Score* score = readScore(DIR + "measure1.mscx"); score->doLayout(); foreach(Excerpt* e, score->excerpts()) e->score()->doLayout(); Measure* m = score->firstMeasure(); score->startCmd(); score->insertMeasure(Element::MEASURE, m); score->endCmd(); QVERIFY(saveCompareScore(score, "measure1-2.mscx", DIR + "measure1-2o.mscx")); delete score; }
void TestInstrumentChange::testChange() { Score* score = test_pre("change"); Measure* m = score->firstMeasure()->nextMeasure(); Segment* s = m->first(Segment::Type::ChordRest); InstrumentChange* ic = static_cast<InstrumentChange*>(s->annotations()[0]); Instrument* ni = score->staff(1)->part()->instr(); ic->setInstrument(*ni); score->startCmd(); ic->setText("Instrument Oboe"); score->undo(new ChangeInstrument(ic, ic->instrument())); score->endCmd(); score->doLayout(); test_post(score, "change"); }
void TestMeasure::spanner_D() { Score* score = readScore(DIR + "measure-9.mscx"); score->doLayout(); foreach(Excerpt* e, score->excerpts()) e->score()->doLayout(); Measure* m = score->firstMeasure()->nextMeasure(); score->startCmd(); score->select(m); score->cmdDeleteSelectedMeasures(); score->endCmd(); QVERIFY(saveCompareScore(score, "measure-9.mscx", DIR + "measure-9-ref.mscx")); delete score; }
void UploadScoreDialog::uploadSuccess(const QString& url) { setVisible(false); Score* score = mscore->currentScore()->rootScore(); QMap<QString, QString> metatags = score->metaTags(); metatags.insert("source", url); score->startCmd(); score->undo(new ChangeMetaTags(score, metatags)); score->endCmd(); QMessageBox::information(this, tr("Success"), tr("Finished! <a href=\"%1\">Go to my score</a>.").arg(url), QMessageBox::Ok, QMessageBox::NoButton); }
void TestNote::tpcTranspose() { Score* score = readScore(DIR + "tpc-transpose.mscx"); score->doLayout(); score->startCmd(); Measure* m = score->firstMeasure(); score->select(m, SelectType::SINGLE, 0); score->changeAccidental(AccidentalType::FLAT); score->endCmd(); score->startCmd(); m = m->nextMeasure(); score->select(m, SelectType::SINGLE, 0); score->upDown(false, UpDownMode::CHROMATIC); score->endCmd(); score->startCmd(); score->cmdConcertPitchChanged(true, true); score->endCmd(); QVERIFY(saveCompareScore(score, "tpc-transpose-test.mscx", DIR + "tpc-transpose-ref.mscx")); }
void InspectorRest::apply() { Rest* rest = static_cast<Rest*>(inspector->element()); Score* score = rest->score(); score->startCmd(); iElement->apply(); iSegment->apply(); bool val = small->isChecked(); if (val != rest->small()) score->undoChangeProperty(rest, P_SMALL, val); score->setLayoutAll(true); score->endCmd(); mscore->endCmd(); }
void InspectorHairpin::apply() { HairpinSegment* hairpinSegment = static_cast<HairpinSegment*>(inspector->element()); Hairpin* hairpin = hairpinSegment->hairpin(); Hairpin::HairpinType vt = hairpin->subtype(); Hairpin::HairpinType nt = Hairpin::HairpinType(iHairpin.subtype->currentIndex()); if (vt != nt) { Score* score = hairpin->score(); score->startCmd(); score->undoChangeProperty(hairpin, P_HAIRPIN_TYPE, nt); score->endCmd(); mscore->endCmd(); } }
void TestMeasure::insertBfKeyChange() { Score* score = readScore(DIR + "measure-insert_bf_key.mscx"); score->doLayout(); // 4th measure Measure* m = score->firstMeasure()->nextMeasure(); m = m->nextMeasure()->nextMeasure(); score->startCmd(); score->insertMeasure(Element::MEASURE, m); score->endCmd(); QVERIFY(saveCompareScore(score, "measure-insert_bf_key.mscx", DIR + "measure-insert_bf_key-ref.mscx")); score->undo()->undo(); score->doLayout(); QVERIFY(saveCompareScore(score, "measure-insert_bf_key_undo.mscx", DIR + "measure-insert_bf_key.mscx")); delete score; }
void InspectorBeam::apply() { Beam* beam = static_cast<Beam*>(inspector->element()); Score* score = beam->score(); bool distribute = b.distribute->isChecked(); Direction d = Direction(b.direction->currentIndex()); score->startCmd(); if (beam->distribute() != distribute) score->undoChangeProperty(beam, P_DISTRIBUTE, distribute); if (beam->beamDirection() != d) score->undoChangeProperty(beam, P_DIRECTION, d); score->setLayoutAll(true); score->endCmd(); mscore->endCmd(); }
void InspectorSpacer::apply() { Spacer* spacer = static_cast<Spacer*>(inspector->element()); Score* score = spacer->score(); qreal space = sp.height->value() * spacer->spatium(); if (space != spacer->gap()) { score->startCmd(); //TODO make undoable spacer->setGap(space); score->setLayoutAll(true); score->setDirty(true); score->endCmd(); mscore->endCmd(); } }