void MeasureBase::add(Element* e) { e->setParent(this); if (e->isLayoutBreak()) { LayoutBreak* b = toLayoutBreak(e); switch (b->layoutBreakType()) { case LayoutBreak::PAGE: setPageBreak(true); setLineBreak(false); setNoBreak(false); break; case LayoutBreak::LINE: setPageBreak(false); setLineBreak(true); setSectionBreak(false); setNoBreak(false); break; case LayoutBreak::SECTION: setLineBreak(false); setSectionBreak(true); setNoBreak(false); //does not work with repeats: score()->tempomap()->setPause(endTick(), b->pause()); score()->setLayoutAll(); break; case LayoutBreak::NOBREAK: setPageBreak(false); setLineBreak(false); setSectionBreak(false); setNoBreak(true); break; } } triggerLayout(); _el.push_back(e); }
void MeasureBase::remove(Element* el) { if (el->isLayoutBreak()) { LayoutBreak* lb = toLayoutBreak(el); switch (lb->layoutBreakType()) { case LayoutBreak::PAGE: setPageBreak(false); break; case LayoutBreak::LINE: setLineBreak(false); break; case LayoutBreak::SECTION: setSectionBreak(false); score()->setPause(endTick(), 0); score()->setLayoutAll(); break; case LayoutBreak::NOBREAK: setNoBreak(false); break; } } if (!_el.remove(el)) { qDebug("MeasureBase(%p)::remove(%s,%p) not found", this, el->name(), el); } }
void MeasureBase::undoSetBreak(bool v, LayoutBreak::Type type) { switch (type) { case LayoutBreak::LINE: if (lineBreak() == v) return; setLineBreak(v); break; case LayoutBreak::PAGE: if (pageBreak() == v) return; if (v && lineBreak()) setLineBreak(false); setPageBreak(v); break; case LayoutBreak::SECTION: if (sectionBreak() == v) return; if (v && lineBreak()) setLineBreak(false); setSectionBreak(v); break; case LayoutBreak::NOBREAK: if (noBreak() == v) return; if (v) { setLineBreak(false); setPageBreak(false); setSectionBreak(false); } setNoBreak(v); break; } if (v) { LayoutBreak* lb = new LayoutBreak(score()); lb->setLayoutBreakType(type); lb->setTrack(-1); // this are system elements lb->setParent(this); score()->undoAddElement(lb); } cleanupLayoutBreaks(true); }