Add default strings for pedal text

This commit is contained in:
James 2023-09-05 09:52:19 +01:00 committed by Casper Jeukendrup
parent deab1dbcca
commit deae275d15
No known key found for this signature in database
GPG key ID: 6C571BEF59E722DD
19 changed files with 153 additions and 53 deletions

View file

@ -35,7 +35,7 @@ namespace mu::engraving {
static const ElementStyle pedalStyle {
{ Sid::pedalText, Pid::BEGIN_TEXT },
{ Sid::pedalContinueText, Pid::CONTINUE_TEXT },
{ Sid::pedalEndText, Pid::END_TEXT },
{ Sid::pedalRosetteEndText, Pid::END_TEXT },
{ Sid::pedalFontFace, Pid::BEGIN_FONT_FACE },
{ Sid::pedalFontFace, Pid::CONTINUE_FONT_FACE },
{ Sid::pedalFontFace, Pid::END_FONT_FACE },
@ -87,10 +87,16 @@ Shape PedalSegment::doCreateShape() const
Sid Pedal::getPropertyStyle(Pid pid) const
{
if (pid == Pid::OFFSET) {
switch (pid) {
case Pid::OFFSET:
return placeAbove() ? Sid::pedalPosAbove : Sid::pedalPosBelow;
case Pid::END_TEXT:
return lineVisible() ? Sid::pedalEndText : Sid::pedalRosetteEndText;
case Pid::BEGIN_TEXT:
return beginHookType() == HookType::NONE ? Sid::pedalText : Sid::pedalHookText;
default:
return TextLineBase::getPropertyStyle(pid);
}
return TextLineBase::getPropertyStyle(pid);
}
//---------------------------------------------------------
@ -111,6 +117,7 @@ Pedal::Pedal(EngravingItem* parent)
resetProperty(Pid::BEGIN_TEXT_PLACE);
resetProperty(Pid::LINE_VISIBLE);
resetProperty(Pid::END_TEXT);
}
//---------------------------------------------------------
@ -144,13 +151,13 @@ engraving::PropertyValue Pedal::propertyDefault(Pid propertyId) const
return style().styleV(Sid::pedalLineStyle);
case Pid::BEGIN_TEXT:
return style().styleV(Sid::pedalText);
return style().styleV(getPropertyStyle(propertyId));
case Pid::CONTINUE_TEXT:
return style().styleV(Sid::pedalContinueText);
case Pid::END_TEXT:
return style().styleV(Sid::pedalEndText);
return style().styleV(getPropertyStyle(propertyId));
case Pid::BEGIN_TEXT_PLACE:
case Pid::CONTINUE_TEXT_PLACE:

View file

@ -1359,6 +1359,14 @@ static void readTextLine114(XmlReader& e, ReadContext& ctx, TextLine* textLine)
static void readPedal114(XmlReader& e, ReadContext& ctx, Pedal* pedal)
{
bool beginTextTag = false;
bool continueTextTag = false;
bool endTextTag = false;
pedal->setBeginText(String());
pedal->setContinueText(String());
pedal->setEndText(String());
while (e.readNextStartElement()) {
const AsciiStringView tag(e.name());
if (tag == "subtype") {
@ -1373,26 +1381,38 @@ static void readPedal114(XmlReader& e, ReadContext& ctx, Pedal* pedal)
read400::TRead::readProperty(pedal, e, ctx, Pid::LINE_STYLE);
pedal->setPropertyFlags(Pid::LINE_STYLE, PropertyFlags::UNSTYLED);
} else if (tag == "beginSymbol" || tag == "symbol") { // "symbol" is obsolete
beginTextTag = true;
String text(e.readText());
pedal->setBeginText(String(u"<sym>%1</sym>").arg(
text.at(0).isDigit()
? resolveSymCompatibility(SymId(text.toInt()), ctx.mscoreVersion())
: text));
pedal->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
String symbol = String(u"<sym>%1</sym>").arg(
text.at(0).isDigit()
? resolveSymCompatibility(SymId(text.toInt()), ctx.mscoreVersion())
: text);
if (symbol != pedal->propertyDefault(Pid::BEGIN_TEXT).value<String>()) {
pedal->setBeginText(symbol);
pedal->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
}
} else if (tag == "continueSymbol") {
continueTextTag = true;
String text(e.readText());
pedal->setContinueText(String(u"<sym>%1</sym>").arg(
text.at(0).isDigit()
? resolveSymCompatibility(SymId(text.toInt()), ctx.mscoreVersion())
: text));
pedal->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
String symbol = String(u"<sym>%1</sym>").arg(
text.at(0).isDigit()
? resolveSymCompatibility(SymId(text.toInt()), ctx.mscoreVersion())
: text);
if (symbol != pedal->propertyDefault(Pid::CONTINUE_TEXT).value<String>()) {
pedal->setContinueText(symbol);
pedal->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
}
} else if (tag == "endSymbol") {
endTextTag = true;
String text(e.readText());
pedal->setEndText(String(u"<sym>%1</sym>").arg(
text.at(0).isDigit()
? resolveSymCompatibility(SymId(text.toInt()), ctx.mscoreVersion())
: text));
pedal->setPropertyFlags(Pid::END_TEXT, PropertyFlags::UNSTYLED);
String symbol = String(u"<sym>%1</sym>").arg(
text.at(0).isDigit()
? resolveSymCompatibility(SymId(text.toInt()), ctx.mscoreVersion())
: text);
if (symbol != pedal->propertyDefault(Pid::END_TEXT).value<String>()) {
pedal->setEndText(symbol);
pedal->setPropertyFlags(Pid::END_TEXT, PropertyFlags::UNSTYLED);
}
} else if (tag == "beginSymbolOffset") { // obsolete
e.readPoint();
} else if (tag == "continueSymbolOffset") { // obsolete
@ -1403,6 +1423,16 @@ static void readPedal114(XmlReader& e, ReadContext& ctx, Pedal* pedal)
e.unknown();
}
}
if (!beginTextTag) {
pedal->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
}
if (!continueTextTag) {
pedal->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
}
if (!endTextTag) {
pedal->setPropertyFlags(Pid::END_TEXT, PropertyFlags::UNSTYLED);
}
}
//---------------------------------------------------------

View file

@ -2051,11 +2051,34 @@ static void readVolta206(XmlReader& e, ReadContext& ctx, Volta* volta)
static void readPedal(XmlReader& e, ReadContext& ctx, Pedal* pedal)
{
bool beginTextTag = false;
bool continueTextTag = false;
bool endTextTag = false;
pedal->setBeginText(String());
pedal->setContinueText(String());
pedal->setEndText(String());
while (e.readNextStartElement()) {
const AsciiStringView tag(e.name());
beginTextTag = tag == "beginText" || beginTextTag;
continueTextTag = tag == "continueText" || continueTextTag;
endTextTag = tag == "endText" || endTextTag;
if (!readTextLineProperties(e, ctx, pedal)) {
e.unknown();
}
}
if (!beginTextTag) {
pedal->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
}
if (!continueTextTag) {
pedal->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
}
if (!endTextTag) {
pedal->setPropertyFlags(Pid::END_TEXT, PropertyFlags::UNSTYLED);
}
adjustPlacement(pedal);
}

View file

@ -3354,13 +3354,35 @@ void TRead::read(Pedal* p, XmlReader& e, ReadContext& ctx)
if (p->score()->mscVersion() < 301) {
ctx.addSpanner(e.intAttribute("id", -1), p);
}
p->setBeginText(String());
p->setContinueText(String());
p->setEndText(String());
bool beginTextTag = false;
bool continueTextTag = false;
bool endTextTag = false;
while (e.readNextStartElement()) {
const AsciiStringView tag(e.name());
beginTextTag = tag == "beginText" || beginTextTag;
continueTextTag = tag == "continueText" || continueTextTag;
endTextTag = tag == "endText" || endTextTag;
if (readStyledProperty(p, tag, e, ctx)) {
} else if (!readProperties(static_cast<TextLineBase*>(p), e, ctx)) {
e.unknown();
}
}
if (!beginTextTag) {
p->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
}
if (!continueTextTag) {
p->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
}
if (!endTextTag) {
p->setPropertyFlags(Pid::END_TEXT, PropertyFlags::UNSTYLED);
}
}
void TRead::read(Rasgueado* r, XmlReader& xml, ReadContext& ctx)

View file

@ -3431,13 +3431,46 @@ void TRead::read(Pedal* p, XmlReader& e, ReadContext& ctx)
if (p->score()->mscVersion() < 301) {
ctx.addSpanner(e.intAttribute("id", -1), p);
}
bool beginTextTag = false;
bool continueTextTag = false;
bool endTextTag = false;
if (p->score()->mscVersion() < 420) {
p->setBeginText(String());
p->setContinueText(String());
p->setEndText(String());
}
while (e.readNextStartElement()) {
const AsciiStringView tag(e.name());
beginTextTag = tag == "beginText" || beginTextTag;
continueTextTag = tag == "continueText" || continueTextTag;
endTextTag = tag == "endText" || endTextTag;
if (readStyledProperty(p, tag, e, ctx)) {
} else if (TRead::readProperty(p, tag, e, ctx, Pid::LINE_VISIBLE)) {
p->resetProperty(Pid::END_TEXT);
} else if (TRead::readProperty(p, tag, e, ctx, Pid::BEGIN_HOOK_TYPE)) {
if (p->beginHookType() != HookType::NONE) {
p->setBeginText(String());
}
} else if (!readProperties(static_cast<TextLineBase*>(p), e, ctx)) {
e.unknown();
}
}
if (p->score()->mscVersion() < 420) {
if (!beginTextTag) {
p->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
}
if (!continueTextTag) {
p->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
}
if (!endTextTag) {
p->setPropertyFlags(Pid::END_TEXT, PropertyFlags::UNSTYLED);
}
}
}
void TRead::read(Rasgueado* r, XmlReader& xml, ReadContext& ctx)

View file

@ -283,9 +283,11 @@ const std::array<StyleDef::StyleValue, size_t(Sid::STYLES)> StyleDef::styleValue
{ Sid::pedalFrameRound, "pedalFrameRound", 0 },
{ Sid::pedalFrameFgColor, "pedalFrameFgColor", Color::BLACK },
{ Sid::pedalFrameBgColor, "pedalFrameBgColor", Color::transparent },
{ Sid::pedalText, "pedalText", String() },
{ Sid::pedalContinueText, "pedalContinueText", String() },
{ Sid::pedalText, "pedalText", String(u"<sym>keyboardPedalPed</sym>") },
{ Sid::pedalHookText, "pedalHookText", String() },
{ Sid::pedalContinueText, "pedalContinueText", String(u"(<sym>keyboardPedalPed</sym>)") },
{ Sid::pedalEndText, "pedalEndText", String() },
{ Sid::pedalRosetteEndText, "pedalRosetteEndText", String(u"<sym>keyboardPedalUp</sym>") },
{ Sid::trillPlacement, "trillPlacement", PlacementV::ABOVE },
{ Sid::trillPosAbove, "trillPosAbove", PointF(.0, -0.5) },

View file

@ -298,8 +298,10 @@ enum class Sid {
pedalFrameFgColor,
pedalFrameBgColor,
pedalText,
pedalHookText,
pedalContinueText,
pedalEndText,
pedalRosetteEndText,
trillPlacement,
trillPosAbove,

View file

@ -84,7 +84,6 @@
</TimeSig>
<Spanner type="Pedal">
<Pedal>
<beginText>&lt;sym&gt;keyboardPedalPed&lt;/sym&gt;</beginText>
<continueText>&lt;font size=&quot;11&quot;/&gt;</continueText>
<endHookHeight>-1.5</endHookHeight>
<lineWidth>0.006</lineWidth>

View file

@ -503,8 +503,6 @@
<Spanner type="Pedal">
<Pedal>
<endHookType>1</endHookType>
<beginText>&lt;sym&gt;keyboardPedalPed&lt;/sym&gt;</beginText>
<continueText>(&lt;sym&gt;keyboardPedalPed&lt;/sym&gt;)</continueText>
</Pedal>
<next>
<location>

View file

@ -7,6 +7,7 @@
<Spanner type="Pedal">
<Pedal>
<beginText>&lt;sym&gt;keyboardPedalPed&lt;sym&gt;</beginText>
<continueText></continueText>
<ticks_f>3/4</ticks_f>
</Pedal>
<next>

View file

@ -95,6 +95,7 @@
<Pedal>
<endHookType>1</endHookType>
<beginHookType>1</beginHookType>
<continueText></continueText>
<color r="255" g="0" b="0" a="255"/>
<color r="255" g="0" b="0" a="255"/>
<Segment>

View file

@ -96,6 +96,7 @@
<Pedal>
<endHookType>1</endHookType>
<beginHookType>1</beginHookType>
<continueText></continueText>
<Segment>
<subtype>0</subtype>
<offset x="0" y="2.8"/>

View file

@ -2322,6 +2322,7 @@ void Convert::pedalFromMEI(engraving::Pedal* pedal, const libmei::Pedal& meiPeda
pedal->setEndHookType(engraving::HookType::HOOK_90);
} else {
pedal->setBeginHookType(engraving::HookType::HOOK_90);
pedal->setBeginText(String());
pedal->setEndHookType(engraving::HookType::HOOK_90);
}

View file

@ -375,7 +375,6 @@
<Spanner type="Pedal">
<Pedal>
<endHookType>1</endHookType>
<beginText>&lt;sym&gt;keyboardPedalPed&lt;/sym&gt;</beginText>
<color r="148" g="33" b="146" a="255"/>
<color r="148" g="33" b="146" a="255"/>
</Pedal>

View file

@ -136,8 +136,6 @@
<Spanner type="Pedal">
<Pedal>
<lineVisible>0</lineVisible>
<beginText>&lt;sym&gt;keyboardPedalPed&lt;/sym&gt;</beginText>
<endText>&lt;sym&gt;keyboardPedalUp&lt;/sym&gt;</endText>
</Pedal>
<next>
<location>
@ -191,7 +189,6 @@
<Spanner type="Pedal">
<Pedal>
<endHookType>1</endHookType>
<beginText>&lt;sym&gt;keyboardPedalPed&lt;/sym&gt;</beginText>
</Pedal>
<next>
<location>

View file

@ -59,7 +59,7 @@ PropertyItem* PedalSettingsModel::lineType() const
bool PedalSettingsModel::isChangingLineVisibilityAllowed() const
{
return isStarSymbolVisible();
return m_rosetteHookSelected;
}
bool PedalSettingsModel::isStarSymbolVisible() const
@ -91,19 +91,22 @@ void PedalSettingsModel::loadProperties()
m_lineType->setIsEnabled(true);
if (isStarSymbolVisible()) {
m_rosetteHookSelected = true;
m_lineType->updateCurrentValue(HOOK_STAR);
} else {
m_rosetteHookSelected = false;
m_lineType->updateCurrentValue(endHookType()->value());
}
emit isChangingLineVisibilityAllowedChanged();
}
void PedalSettingsModel::setLineType(int newType)
{
bool rosetteHookSelected = (newType == HOOK_STAR);
m_rosetteHookSelected = (newType == HOOK_STAR);
int hookType = newType;
QString text = QString();
if (rosetteHookSelected) {
if (m_rosetteHookSelected) {
hookType = static_cast<int>(mu::engraving::HookType::NONE);
text = mu::engraving::Pedal::STAR_SYMBOL;
startHookType()->setValue(hookType);
@ -111,7 +114,7 @@ void PedalSettingsModel::setLineType(int newType)
endHookType()->setValue(hookType);
endText()->setValue(text);
isLineVisible()->setValue(!rosetteHookSelected);
isLineVisible()->setValue(!m_rosetteHookSelected);
m_lineType->setValue(newType);
}

View file

@ -50,6 +50,7 @@ private:
void setLineType(int newType);
PropertyItem* m_lineType = nullptr;
bool m_rosetteHookSelected = false;
};
}

View file

@ -1250,21 +1250,11 @@ PalettePtr PaletteCreator::newLinesPalette(bool defaultPalette)
auto pedal = makeElement<Pedal>(gpaletteScore);
pedal->setLen(w);
pedal->setBeginText(Pedal::PEDAL_SYMBOL);
pedal->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
pedal->setContinueText(QString("(%1)").arg(Pedal::PEDAL_SYMBOL));
pedal->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
pedal->setEndHookType(HookType::HOOK_90);
sp->appendElement(pedal, QT_TRANSLATE_NOOP("palette", "Pedal (with ped and line)"));
pedal = makeElement<Pedal>(gpaletteScore);
pedal->setLen(w);
pedal->setBeginText(Pedal::PEDAL_SYMBOL);
pedal->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
pedal->setContinueText(QString("(%1)").arg(Pedal::PEDAL_SYMBOL));
pedal->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
pedal->setEndText(Pedal::STAR_SYMBOL);
pedal->setPropertyFlags(Pid::END_TEXT, PropertyFlags::UNSTYLED);
pedal->setLineVisible(false);
sp->appendElement(pedal, QT_TRANSLATE_NOOP("palette", "Pedal (with ped and asterisk)"));
@ -1937,21 +1927,11 @@ PalettePtr PaletteCreator::newKeyboardPalette()
auto pedal = makeElement<Pedal>(gpaletteScore);
pedal->setLen(w);
pedal->setBeginText(Pedal::PEDAL_SYMBOL);
pedal->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
pedal->setContinueText(QString("(%1)").arg(Pedal::PEDAL_SYMBOL));
pedal->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
pedal->setEndText(Pedal::STAR_SYMBOL);
pedal->setPropertyFlags(Pid::END_TEXT, PropertyFlags::UNSTYLED);
pedal->setLineVisible(false);
sp->appendElement(pedal, QT_TRANSLATE_NOOP("palette", "Pedal (with ped and asterisk)"));
pedal = makeElement<Pedal>(gpaletteScore);
pedal->setLen(w);
pedal->setBeginText(Pedal::PEDAL_SYMBOL);
pedal->setPropertyFlags(Pid::BEGIN_TEXT, PropertyFlags::UNSTYLED);
pedal->setContinueText(QString("(%1)").arg(Pedal::PEDAL_SYMBOL));
pedal->setPropertyFlags(Pid::CONTINUE_TEXT, PropertyFlags::UNSTYLED);
pedal->setEndHookType(HookType::HOOK_90);
sp->appendElement(pedal, QT_TRANSLATE_NOOP("palette", "Pedal (with ped and line)"));

BIN
vtest/scores/pedal-2.mscz Normal file

Binary file not shown.