void Marker::setMarkerType(MarkerType t) { _markerType = t; ScoreFont* f = score()->scoreFont(); switch(t) { case MarkerType::SEGNO: setText(f->toString(SymId::segno)); setLabel("segno"); break; case MarkerType::VARSEGNO: setText(f->toString(SymId::segno)); // TODO-smufl setLabel("varsegno"); break; case MarkerType::CODA: setText(f->toString(SymId::coda)); setLabel("codab"); break; case MarkerType::VARCODA: setText(f->toString(SymId::codaSquare)); setLabel("varcoda"); break; case MarkerType::CODETTA: setText(f->toString(SymId::codaSquare)); // TODO-smufl setLabel("codetta"); break; case MarkerType::FINE: setText("Fine"); setLabel("fine"); break; case MarkerType::TOCODA: setText("To Coda"); setLabel("coda"); break; case MarkerType::USER: break; default: qDebug("unknown marker type %d\n", t); break; } }
void TimeSigProperties::accept() { if (zText->text() != timesig->numeratorString()) timesig->setNumeratorString(zText->text()); if (nText->text() != timesig->denominatorString()) timesig->setDenominatorString(nText->text()); TimeSigType ts = TimeSigType::NORMAL; if (textButton->isChecked()) ts = TimeSigType::NORMAL; else if (fourfourButton->isChecked()) ts = TimeSigType::FOUR_FOUR; else if (allaBreveButton->isChecked()) ts = TimeSigType::ALLA_BREVE; else if (otherButton->isChecked()) { // if other symbol, set as normal text... ts = TimeSigType::NORMAL; ScoreFont* scoreFont = timesig->score()->scoreFont(); SymId symId = (SymId)( otherCombo->itemData(otherCombo->currentIndex()).toInt() ); // ...and set numerator to font string for symbol and denominator to empty string timesig->setNumeratorString(scoreFont->toString(symId)); timesig->setDenominatorString(QString()); } Fraction actual(zActual->value(), nActual->value()); Fraction nominal(zNominal->value(), nNominal->value()); timesig->setSig(actual, ts); timesig->setStretch(nominal / actual); Groups g = groups->groups(); timesig->setGroups(g); QDialog::accept(); }
void Arpeggio::symbolLine(SymId end, SymId fill) { qreal y1 = -_userLen1; qreal y2 = _height + _userLen2; qreal w = y2 - y1; qreal mag = magS(); ScoreFont* f = score()->scoreFont(); const QString& fillString = f->toString(fill); symbols.clear(); symbols.append(f->toString(end)); qreal w1 = f->bbox(end, mag).width(); qreal w2 = f->width(fill, mag); int n = lrint((w - w1) / w2); for (int i = 0; i < n; ++i) symbols.prepend(fillString); }
void TrillSegment::symbolLine(SymId start, SymId fill) { qreal x1 = 0; qreal x2 = pos2().x(); qreal w = x2 - x1; qreal mag = magS(); ScoreFont* f = score()->scoreFont(); _symbols.clear(); _symbols.append(f->toString(start)); qreal w1 = f->bbox(start, mag).width(); qreal w2 = f->width(fill, mag); int n = lrint((w - w1) / w2); for (int i = 0; i < n; ++i) _symbols.append(f->toString(fill)); QRectF r(f->bbox(_symbols, mag)); setbbox(r); }
TimeSigProperties::TimeSigProperties(TimeSig* t, QWidget* parent) : QDialog(parent) { setupUi(this); setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); timesig = t; zText->setText(timesig->numeratorString()); nText->setText(timesig->denominatorString()); // set validators for numerator and denominator strings // which only accept '+', '(', ')', digits and some time symb conventional representations QRegExp rx("[0-9+CO()\\x00A2\\x00D8]*"); QValidator *validator = new QRegExpValidator(rx, this); zText->setValidator(validator); nText->setValidator(validator); Fraction nominal = timesig->sig() / timesig->stretch(); nominal.reduce(); zNominal->setValue(nominal.numerator()); nNominal->setValue(nominal.denominator()); Fraction sig(timesig->sig()); zActual->setValue(sig.numerator()); nActual->setValue(sig.denominator()); zNominal->setEnabled(false); nNominal->setEnabled(false); // TODO: fix http://musescore.org/en/node/42341 // for now, editing of actual (local) time sig is disabled in dialog // but more importantly, the dialog should make it clear that this is "local" change only // and not normally the right way to add 7/4 to a score zActual->setEnabled(false); nActual->setEnabled(false); switch (timesig->timeSigType()) { case TimeSigType::NORMAL: textButton->setChecked(true); break; case TimeSigType::FOUR_FOUR: fourfourButton->setChecked(true); break; case TimeSigType::ALLA_BREVE: allaBreveButton->setChecked(true); break; } // set ID's of other symbols static const SymId prolatioSymbols[] = { SymId::mensuralProlation1, // tempus perfectum, prol. perfecta SymId::mensuralProlation2, // tempus perfectum, prol. imperfecta SymId::mensuralProlation3, // tempus perfectum, prol. imperfecta, dimin. SymId::mensuralProlation4, // tempus perfectum, prol. perfecta, dimin. SymId::mensuralProlation5, // tempus imperf. prol. perfecta // SymId::mensuralProlation6, // same shape as common time SymId::mensuralProlation7, // tempus imperf., prol. imperfecta, reversed SymId::mensuralProlation8, // tempus imperf., prol. perfecta, dimin. // SymId::mensuralProlation9, // same shape as alla breve SymId::mensuralProlation10, // tempus imperf., prol imperfecta, dimin., reversed SymId::mensuralProlation11, // tempus inperf., prol. perfecta, reversed }; ScoreFont* scoreFont = t->score()->scoreFont(); int idx = 0; for (SymId symId : prolatioSymbols) { const QString& str = scoreFont->toString(symId); if (str.size() > 0) { otherCombo->setItemData(idx, (int)symId); // if time sig matches this symbol string, set as selected if (timesig->timeSigType() == TimeSigType::NORMAL && timesig->denominatorString().isEmpty() && timesig->numeratorString() == str) { textButton->setChecked(false); otherButton->setChecked(true); otherCombo->setCurrentIndex(idx); } } idx++; } Groups g = t->groups(); if (g.empty()) g = Groups::endings(timesig->sig()); // initialize with default groups->setSig(timesig->sig(), g); }
TimeSigProperties::TimeSigProperties(TimeSig* t, QWidget* parent) : QDialog(parent) { setupUi(this); setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); timesig = t; zText->setText(timesig->numeratorString()); nText->setText(timesig->denominatorString()); // set validators for numerator and denominator strings // which only accept '+', '(', ')' and digits QRegExp rx("[0-9+()]*"); QValidator *validator = new QRegExpValidator(rx, this); zText->setValidator(validator); nText->setValidator(validator); Fraction nominal = timesig->sig() * timesig->stretch(); nominal.reduce(); zNominal->setValue(nominal.numerator()); nNominal->setValue(nominal.denominator()); zActual->setValue(timesig->sig().numerator()); nActual->setValue(timesig->sig().denominator()); switch (timesig->timeSigType()) { case TSIG_NORMAL: textButton->setChecked(true); break; case TSIG_FOUR_FOUR: fourfourButton->setChecked(true); break; case TSIG_ALLA_BREVE: allaBreveButton->setChecked(true); break; } // set ID's of other symbols static const SymId prolatioSymbols[] = { SymId::mensuralTempPerfProlPerf, SymId::mensuralTempPerfProlImp, SymId::mensuralTempPerfProlImpDimin, SymId::mensuralTempPerfProlPerfDimin, SymId::mensuralTempImpProlPerf, // SymId::mensuralTempImpProlImp, // same shape as common time SymId::mensuralTempImpProlImpRev, SymId::mensuralTempImpProlPerfDimin, // SymId::mensuralTempImpProlImpDimin, // same shape as alla breve SymId::mensuralTempImpProlImpDiminRev, SymId::mensuralTempImpProlPerfRev, }; ScoreFont* scoreFont = t->score()->scoreFont(); int idx = 0; for (SymId symId : prolatioSymbols) { const QString& str = scoreFont->toString(symId); if (str.size() > 0) { otherCombo->setItemData(idx, (int)symId); // if time sig matches this symbol string, set as selected if (timesig->timeSigType() == TSIG_NORMAL && timesig->denominatorString().isEmpty() && timesig->numeratorString() == str) { textButton->setChecked(false); otherButton->setChecked(true); otherCombo->setCurrentIndex(idx); } } idx++; } Groups g = t->groups(); if (g.empty()) g = Groups::endings(timesig->sig()); // initialize with default groups->setSig(timesig->sig(), g); }