Add Measure Number element to palettes

This commit is contained in:
Marr11317 2020-02-24 00:28:58 -05:00
parent 414808fdb2
commit 316360b3a4
4 changed files with 34 additions and 11 deletions

View file

@ -98,7 +98,7 @@ void Score::getSelectedChordRest2(ChordRest** cr1, ChordRest** cr2) const
{
*cr1 = 0;
*cr2 = 0;
foreach(Element* e, selection().elements()) {
for (Element* e : selection().elements()) {
if (e->isNote())
e = e->parent();
if (e->isChordRest()) {
@ -1894,7 +1894,7 @@ void Score::deleteItem(Element* el)
if (m->isMMRest()) {
// propagate to original measure
m = m->mmRestLast();
foreach(Element* e, m->el()) {
for (Element* e : m->el()) {
if (e->isLayoutBreak()) {
undoRemoveElement(e);
break;
@ -2752,7 +2752,7 @@ void Score::colorItem(Element* element)
if (!c.isValid())
return;
foreach(Element* e, selection().elements()) {
for (Element* e : selection().elements()) {
if (e->color() != c) {
e->undoChangeProperty(Pid::COLOR, c);
e->setGenerated(false);
@ -4356,6 +4356,9 @@ void Score::undoAddElement(Element* element)
ne->setParent(m);
undo(new AddElement(ne));
}
else if (et == ElementType::MEASURE_NUMBER) {
toMeasure(element->parent())->undoChangeProperty(Pid::MEASURE_NUMBER_MODE, static_cast<int>(MeasureNumberMode::SHOW));
}
else {
Segment* segment = toSegment(element->parent());
Fraction tick = segment->tick();
@ -4472,7 +4475,7 @@ void Score::undoAddElement(Element* element)
return;
}
foreach (Staff* staff, ostaff->staffList()) {
for (Staff* staff : ostaff->staffList()) {
Score* score = staff->score();
int staffIdx = staff->idx();

View file

@ -1343,6 +1343,10 @@ bool Measure::acceptDrop(EditData& data) const
viewer->setDropRectangle(canvasBoundingRect());
return true;
case ElementType::MEASURE_NUMBER:
viewer->setDropRectangle(canvasBoundingRect());
return true;
case ElementType::BRACKET:
case ElementType::REPEAT_MEASURE:
case ElementType::MEASURE:
@ -1432,6 +1436,11 @@ Element* Measure::drop(EditData& data)
score()->undoAddElement(e);
return e;
case ElementType::MEASURE_NUMBER:
undoChangeProperty(Pid::MEASURE_NUMBER_MODE, static_cast<int>(MeasureNumberMode::SHOW));
delete e;
break;
case ElementType::BRACKET:
{
Bracket* b = toBracket(e);
@ -1448,7 +1457,7 @@ Element* Measure::drop(EditData& data)
score()->undoAddBracket(staff, level, b->bracketType(), 1);
delete b;
}
return 0;
break;
case ElementType::CLEF:
score()->undoChangeClef(staff, this, toClef(e)->clefType());
@ -1475,7 +1484,7 @@ Element* Measure::drop(EditData& data)
case ElementType::TIMESIG:
score()->cmdAddTimeSig(this, staffIdx, toTimeSig(e), data.modifiers & Qt::ControlModifier);
return 0;
break;
case ElementType::LAYOUT_BREAK: {
LayoutBreak* b = toLayoutBreak(e);
@ -1844,7 +1853,7 @@ void Measure::adjustToLen(Fraction nf, bool appendRestsIfNecessary)
//
// CHECK: do not remove all slurs
//
foreach (Element* e, m->el()) {
for (Element* e : m->el()) {
if (e->isSlur())
s->undoRemoveElement(e);
}
@ -3012,7 +3021,7 @@ Measure* Measure::cloneMeasure(Score* sc, const Fraction& tick, TieMap* tieMap)
s->add(ne);
}
}
foreach(Element* e, el()) {
for (Element* e : el()) {
Element* ne = e->clone();
ne->setScore(sc);
ne->setOffset(e->offset());
@ -4403,4 +4412,3 @@ void Measure::computeMinWidth()
}
}

View file

@ -361,6 +361,7 @@ void ScoreView::dragMoveEvent(QDragMoveEvent* event)
case ElementType::ARPEGGIO:
case ElementType::BREATH:
case ElementType::GLISSANDO:
case ElementType::MEASURE_NUMBER:
case ElementType::BRACKET:
case ElementType::ARTICULATION:
case ElementType::FERMATA:
@ -506,6 +507,7 @@ void ScoreView::dropEvent(QDropEvent* event)
case ElementType::ARPEGGIO:
case ElementType::BREATH:
case ElementType::GLISSANDO:
case ElementType::MEASURE_NUMBER:
case ElementType::BRACKET:
case ElementType::ARTICULATION:
case ElementType::FERMATA:
@ -547,7 +549,7 @@ void ScoreView::dropEvent(QDropEvent* event)
}
_score->addRefresh(el->canvasBoundingRect());
// HACK ALERT!
// TODO: HACK ALERT!
if (el->isMeasure() && editData.dropElement->isLayoutBreak()) {
Measure* m = toMeasure(el);
if (m->isMMRest())
@ -680,5 +682,5 @@ bool ScoreView::dropCanvas(Element* e)
return false;
}
}
} // namespace Ms

View file

@ -83,6 +83,7 @@
#include "libmscore/vibrato.h"
#include "libmscore/palmmute.h"
#include "libmscore/fermata.h"
#include "libmscore/measurenumber.h"
#include "palette/palettetree.h"
#include "palette/palettewidget.h"
@ -1607,6 +1608,15 @@ PalettePanel* MuseScore::newTextPalettePanel(bool defaultPalettePanel)
stxt->setXmlText(QT_TRANSLATE_NOOP("Palette", "System Text"));
sp->append(stxt, QT_TRANSLATE_NOOP("Palette", "System text"))->setElementTranslated(true);
// Measure numbers, unlike other elements (but like most text elements),
// are not copied directly into the score when drop.
// Instead, they simply set the corresponding measure's MeasureNumberMode to SHOW
// Because of that, the element shown in the palettes does not have to have any particular formatting.
MeasureNumber* meaNum = new MeasureNumber(gscore);
meaNum->setProperty(Pid::SUB_STYLE, int(Tid::STAFF)); // Make the element bigger in the palettes (using the default measure number style makes it too small)
meaNum->setXmlText(QT_TRANSLATE_NOOP("Palette", "Measure Number"));
sp->append(meaNum, QT_TRANSLATE_NOOP("Palette", "Measure Number"))->setElementTranslated(true);
if (!defaultPalettePanel) {
StaffText* pz = new StaffText(gscore);
pz->setXmlText(QT_TRANSLATE_NOOP("Palette", "pizz."));