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()); }
void ScoreView::elementPropertyAction(const QString& cmd, Element* e) { if (cmd == "a-props") { ArticulationProperties rp(static_cast<Articulation*>(e)); rp.exec(); } else if (cmd == "b-props") { Bend* bend = static_cast<Bend*>(e); BendProperties bp(bend, 0); if (bp.exec()) score()->undo(new ChangeBend(bend, bp.points())); } else if (cmd == "f-props") { BoxProperties vp(static_cast<Box*>(e), 0); vp.exec(); } else if (cmd == "measure-props") { MeasureProperties vp(static_cast<Note*>(e)->chord()->segment()->measure()); vp.exec(); } else if (cmd == "frame-text") { Text* s = new Text(score()); // s->setSubtype(TEXT_FRAME); s->setTextStyleType(TEXT_STYLE_FRAME); s->setParent(e); score()->undoAddElement(s); score()->select(s, SELECT_SINGLE, 0); startEdit(s); score()->setLayoutAll(true); } else if (cmd == "picture") { mscore->addImage(score(), static_cast<HBox*>(e)); } else if (cmd == "frame-text") { Text* t = new Text(score()); t->setTextStyleType(TEXT_STYLE_FRAME); t->setParent(e); score()->undoAddElement(t); score()->select(t, SELECT_SINGLE, 0); startEdit(t); } else if (cmd == "title-text") { Text* t = new Text(score()); t->setTextStyleType(TEXT_STYLE_TITLE); t->setParent(e); score()->undoAddElement(t); score()->select(t, SELECT_SINGLE, 0); startEdit(t); } else if (cmd == "subtitle-text") { Text* t = new Text(score()); t->setTextStyleType(TEXT_STYLE_SUBTITLE); t->setParent(e); score()->undoAddElement(t); score()->select(t, SELECT_SINGLE, 0); startEdit(t); } else if (cmd == "composer-text") { Text* t = new Text(score()); t->setTextStyleType(TEXT_STYLE_COMPOSER); t->setParent(e); score()->undoAddElement(t); score()->select(t, SELECT_SINGLE, 0); startEdit(t); } else if (cmd == "poet-text") { Text* t = new Text(score()); t->setTextStyleType(TEXT_STYLE_POET); t->setParent(e); score()->undoAddElement(t); score()->select(t, SELECT_SINGLE, 0); startEdit(t); } else if (cmd == "insert-hbox") { HBox* s = new HBox(score()); double w = width() - s->leftMargin() * MScore::DPMM - s->rightMargin() * MScore::DPMM; s->setBoxWidth(Spatium(w / s->spatium())); s->setParent(e); score()->undoAddElement(s); score()->select(s, SELECT_SINGLE, 0); startEdit(s); } else if (cmd == "picture") mscore->addImage(score(), e); else if (cmd == "v-props") { VoltaSegment* vs = static_cast<VoltaSegment*>(e); VoltaProperties vp; vp.setText(vs->volta()->text()); vp.setEndings(vs->volta()->endings()); int rv = vp.exec(); if (rv) { QString txt = vp.getText(); QList<int> l = vp.getEndings(); if (txt != vs->volta()->text()) score()->undoChangeVoltaText(vs->volta(), txt); if (l != vs->volta()->endings()) score()->undoChangeVoltaEnding(vs->volta(), l); } } else if (cmd == "l-props") { TextLineSegment* vs = static_cast<TextLineSegment*>(e); TextLine* nTl = vs->textLine()->clone(); LineProperties lp(nTl); if (lp.exec()) { score()->undoChangeElement(vs->textLine(), nTl); // force new text foreach(SpannerSegment* l, nTl->spannerSegments()) static_cast<TextLineSegment*>(l)->clearText(); } else delete nTl; } else if (cmd == "tr-props") { TremoloBar* tb = static_cast<TremoloBar*>(e); TremoloBarProperties bp(tb, 0); if (bp.exec()) score()->undo(new ChangeTremoloBar(tb, bp.points())); } if (cmd == "ts-courtesy") { TimeSig* ts = static_cast<TimeSig*>(e); score()->undo(new ChangeTimesig(static_cast<TimeSig*>(e), !ts->showCourtesySig(), ts->sig(), ts->stretch(), ts->numeratorString(), ts->denominatorString(), ts->timeSigType())); } else if (cmd == "ts-props") { TimeSig* ts = static_cast<TimeSig*>(e); TimeSig r(*ts); TimeSigProperties vp(&r); int rv = vp.exec(); if (rv) { bool stretchChanged = r.stretch() != ts->stretch(); if (r.numeratorString() != ts->numeratorString() || r.denominatorString() != ts->denominatorString() || r.sig() != ts->sig() || stretchChanged || r.timeSigType() != ts->timeSigType()) { score()->undo(new ChangeTimesig(ts, r.showCourtesySig(), r.sig(), r.stretch(), r.numeratorString(), r.denominatorString(), r.timeSigType())); if (stretchChanged) score()->timesigStretchChanged(ts, ts->measure(), ts->staffIdx()); } } } else if (cmd == "smallAcc") score()->undoChangeProperty(e, P_SMALL, !static_cast<Accidental*>(e)->small()); else if (cmd == "smallNote") score()->undoChangeProperty(e, P_SMALL, !static_cast<Note*>(e)->small()); else if (cmd == "clef-courtesy") { bool show = !static_cast<Clef*>(e)->showCourtesy(); score()->undoChangeProperty(e, P_SHOW_COURTESY, show); } else if (cmd == "d-props") { Dynamic* dynamic = static_cast<Dynamic*>(e); Dynamic* nText = new Dynamic(*dynamic); TextProperties tp(nText, 0); int rv = tp.exec(); if (rv) score()->undoChangeElement(dynamic, nText); else delete nText; } else if (cmd == "st-props") { StaffTextProperties rp(static_cast<StaffText*>(e)); rp.exec(); } else if (cmd == "d-dynamics") { Dynamic* dynamic = static_cast<Dynamic*>(e); int oldVelo = dynamic->velocity(); Element::DynamicRange ot = dynamic->dynRange(); DynamicProperties dp(dynamic); int rv = dp.exec(); if (rv) { int newVelo = dynamic->velocity(); Element::DynamicRange nt = dynamic->dynRange(); dynamic->setVelocity(oldVelo); dynamic->setDynRange(ot); if (newVelo != oldVelo) score()->undoChangeProperty(dynamic, P_VELOCITY, newVelo); if (nt != ot) score()->undoChangeProperty(dynamic, P_DYNAMIC_RANGE, nt); } } else if (cmd == "text-props") { Text* ot = static_cast<Text*>(e); Text* nText = static_cast<Text*>(ot->clone()); TextProperties tp(nText); int rv = tp.exec(); if (rv) { QList<Element*> sl = score()->selection().elements(); QList<Element*> selectedElements; foreach(Element* e, sl) { if (e->type() != ot->type()) continue; Text* t = static_cast<Text*>(e); Text* tt = t->clone(); if (nText->styled() != ot->styled() || nText->styled()) { if (nText->styled()) tt->setTextStyleType(nText->textStyleType()); else tt->setUnstyled(); tt->setModified(true); } if (!nText->styled() && (nText->textStyle() != ot->textStyle())) { tt->setTextStyle(nText->textStyle()); tt->styleChanged(); tt->setModified(true); } if (t->selected()) selectedElements.append(tt); score()->undoChangeElement(t, tt); } score()->select(0, SELECT_SINGLE, 0); foreach(Element* e, selectedElements) score()->select(e, SELECT_ADD, 0); } delete nText; }