void TimeDialog::paletteChanged(int idx) { TimeSig* e = static_cast<TimeSig*>(sp->element(idx)); if (!e || e->type() != Element::TIMESIG) { zNominal->setEnabled(false); nNominal->setEnabled(false); zText->setEnabled(false); nText->setEnabled(false); groups->setEnabled(false); addButton->setEnabled(false); return; } zNominal->setEnabled(true); nNominal->setEnabled(true); zText->setEnabled(true); nText->setEnabled(true); groups->setEnabled(true); addButton->setEnabled(true); Fraction sig(e->sig()); Groups g = e->groups(); if (g.empty()) g = Groups::endings(sig); groups->setSig(sig, g); zNominal->setValue(sig.numerator()); nNominal->setCurrentIndex(denominator2Idx(sig.denominator())); zText->setText(e->numeratorString()); nText->setText(e->denominatorString()); }
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()); 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; } 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 '+', '(', ')', 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); }