diff --git a/src/engraving/libmscore/pedal.cpp b/src/engraving/libmscore/pedal.cpp index c4a80b220b..71b61d38f6 100644 --- a/src/engraving/libmscore/pedal.cpp +++ b/src/engraving/libmscore/pedal.cpp @@ -55,6 +55,9 @@ static const ElementStyle pedalStyle { { Sid::pedalPosBelow, Pid::OFFSET }, }; +const QString Pedal::PEDAL_SYMBOL = "keyboardPedalPed"; +const QString Pedal::STAR_SYMBOL = "keyboardPedalUp"; + PedalSegment::PedalSegment(Pedal* sp, System* parent) : TextLineBaseSegment(ElementType::PEDAL_SEGMENT, sp, parent, ElementFlag::MOVABLE | ElementFlag::ON_STAFF) { diff --git a/src/engraving/libmscore/pedal.h b/src/engraving/libmscore/pedal.h index 390ca8a7f7..6e942f691a 100644 --- a/src/engraving/libmscore/pedal.h +++ b/src/engraving/libmscore/pedal.h @@ -58,6 +58,9 @@ protected: mu::PointF linePos(Grip, System**) const override; public: + static const QString PEDAL_SYMBOL; + static const QString STAR_SYMBOL; + Pedal(EngravingItem* parent); Pedal* clone() const override { return new Pedal(*this); } diff --git a/src/engraving/rw/compat/read114.cpp b/src/engraving/rw/compat/read114.cpp index 82e53fb010..f3070c3656 100644 --- a/src/engraving/rw/compat/read114.cpp +++ b/src/engraving/rw/compat/read114.cpp @@ -1392,7 +1392,7 @@ static void readPedal114(XmlReader& e, const ReadContext& ctx, Pedal* pedal) e.unknown(); } } - pedal->setBeginText("keyboardPedalPed"); + pedal->setBeginText(Pedal::PEDAL_SYMBOL); } //--------------------------------------------------------- diff --git a/src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp b/src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp index 2b8cf42785..f3fccf7d62 100644 --- a/src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp +++ b/src/importexport/musicxml/internal/musicxml/importmxmlpass2.cpp @@ -3107,7 +3107,7 @@ void MusicXMLParserDirection::pedal(const QString& type, const int /* number */, if (type == "start") { auto p = spdesc._isStopped ? toPedal(spdesc._sp) : new Pedal(_score->dummy()); if (sign == "yes") { - p->setBeginText("keyboardPedalPed"); + p->setBeginText(Pedal::PEDAL_SYMBOL); } else { p->setBeginHookType(HookType::HOOK_90); } diff --git a/src/inspector/models/notation/lines/hairpinlinesettingsmodel.cpp b/src/inspector/models/notation/lines/hairpinlinesettingsmodel.cpp index fdd3d22e8d..22e24e6da2 100644 --- a/src/inspector/models/notation/lines/hairpinlinesettingsmodel.cpp +++ b/src/inspector/models/notation/lines/hairpinlinesettingsmodel.cpp @@ -54,7 +54,7 @@ HairpinLineSettingsModel::HairpinLineSettingsModel(QObject* parent, IElementRepo { Ms::HookType::HOOK_90T, IconCode::LINE_WITH_T_LIKE_END_HOOK } }; - setPossibleHookTypes(hookTypes); + setPossibleEndHookTypes(hookTypes); createProperties(); } diff --git a/src/inspector/models/notation/lines/letringsettingsmodel.cpp b/src/inspector/models/notation/lines/letringsettingsmodel.cpp index 51c8f7de16..f1af72e8b1 100644 --- a/src/inspector/models/notation/lines/letringsettingsmodel.cpp +++ b/src/inspector/models/notation/lines/letringsettingsmodel.cpp @@ -37,7 +37,7 @@ void LetRingSettingsModel::createProperties() { LineSettingsModel::createProperties(); - beginingHookType()->setIsVisible(false); + startHookType()->setIsVisible(false); endHookType()->setIsVisible(false); beginingTextHorizontalOffset()->setIsVisible(false); diff --git a/src/inspector/models/notation/lines/linesettingsmodel.cpp b/src/inspector/models/notation/lines/linesettingsmodel.cpp index 57e0bfebae..deefa6c33e 100644 --- a/src/inspector/models/notation/lines/linesettingsmodel.cpp +++ b/src/inspector/models/notation/lines/linesettingsmodel.cpp @@ -36,11 +36,13 @@ LineSettingsModel::LineSettingsModel(QObject* parent, IElementRepositoryService* void LineSettingsModel::createProperties() { - m_lineStyle = buildPropertyItem(Ms::Pid::LINE_STYLE, [this](const Ms::Pid pid, const QVariant& newValue) { + auto applyPropertyValueAndUpdateAvailability = [this](const Ms::Pid pid, const QVariant& newValue) { onPropertyValueChanged(pid, newValue); - onUpdateLinePropertiesAvailability(); - }); + }; + + m_lineStyle = buildPropertyItem(Ms::Pid::LINE_STYLE, applyPropertyValueAndUpdateAvailability); + m_isLineVisible = buildPropertyItem(Ms::Pid::LINE_VISIBLE, applyPropertyValueAndUpdateAvailability); m_placement = buildPropertyItem(Ms::Pid::PLACEMENT); @@ -48,10 +50,9 @@ void LineSettingsModel::createProperties() m_dashLineLength = buildPropertyItem(Ms::Pid::DASH_LINE_LEN); m_dashGapLength = buildPropertyItem(Ms::Pid::DASH_GAP_LEN); - m_isLineVisible = buildPropertyItem(Ms::Pid::LINE_VISIBLE); m_allowDiagonal = buildPropertyItem(Ms::Pid::DIAGONAL); - m_beginingHookType = buildPropertyItem(Ms::Pid::BEGIN_HOOK_TYPE); + m_startHookType = buildPropertyItem(Ms::Pid::BEGIN_HOOK_TYPE); m_endHookType = buildPropertyItem(Ms::Pid::END_HOOK_TYPE); m_hookHeight = buildPropertyItem(Ms::Pid::END_HOOK_HEIGHT); @@ -107,7 +108,7 @@ void LineSettingsModel::loadProperties() loadPropertyItem(m_isLineVisible); loadPropertyItem(m_allowDiagonal); - loadPropertyItem(m_beginingHookType); + loadPropertyItem(m_startHookType); loadPropertyItem(m_endHookType); loadPropertyItem(m_hookHeight); @@ -148,7 +149,7 @@ void LineSettingsModel::resetProperties() m_dashGapLength, m_isLineVisible, m_allowDiagonal, - m_beginingHookType, + m_startHookType, m_endHookType, m_hookHeight, m_beginingText, @@ -204,9 +205,9 @@ PropertyItem* LineSettingsModel::allowDiagonal() const return m_allowDiagonal; } -PropertyItem* LineSettingsModel::beginingHookType() const +PropertyItem* LineSettingsModel::startHookType() const { - return m_beginingHookType; + return m_startHookType; } PropertyItem* LineSettingsModel::endHookType() const @@ -264,13 +265,23 @@ PropertyItem* LineSettingsModel::endTextVerticalOffset() const return m_endTextVerticalOffset; } +QVariantList LineSettingsModel::possibleStartHookTypes() const +{ + return m_possibleStartHookTypes; +} + QVariantList LineSettingsModel::possibleEndHookTypes() const +{ + return m_possibleEndHookTypes; +} + +QVariantList LineSettingsModel::hookTypesToObjList(const QList& types) const { QVariantList result; - for (HookTypeInfo typeInfo : m_possibleHookTypes) { + for (HookTypeInfo typeInfo : types) { QVariantMap obj; - obj["value"] = static_cast(typeInfo.type); + obj["value"] = typeInfo.type; obj["iconCode"] = static_cast(typeInfo.icon); result << obj; @@ -283,7 +294,7 @@ void LineSettingsModel::onUpdateLinePropertiesAvailability() { bool isLineAvailable = m_isLineVisible->value().toBool(); - m_beginingHookType->setIsEnabled(isLineAvailable); + m_startHookType->setIsEnabled(isLineAvailable); m_endHookType->setIsEnabled(isLineAvailable); m_thickness->setIsEnabled(isLineAvailable); m_hookHeight->setIsEnabled(isLineAvailable); @@ -302,7 +313,12 @@ bool LineSettingsModel::isTextVisible(TextType type) const return type != TextType::EndText; } -void LineSettingsModel::setPossibleHookTypes(const QList& types) +void LineSettingsModel::setPossibleStartHookTypes(const QList& types) { - m_possibleHookTypes = types; + m_possibleStartHookTypes = hookTypesToObjList(types); +} + +void LineSettingsModel::setPossibleEndHookTypes(const QList& types) +{ + m_possibleEndHookTypes = hookTypesToObjList(types); } diff --git a/src/inspector/models/notation/lines/linesettingsmodel.h b/src/inspector/models/notation/lines/linesettingsmodel.h index bf8ec7fe8e..475253cd93 100644 --- a/src/inspector/models/notation/lines/linesettingsmodel.h +++ b/src/inspector/models/notation/lines/linesettingsmodel.h @@ -41,7 +41,7 @@ class LineSettingsModel : public AbstractInspectorModel Q_PROPERTY(PropertyItem * isLineVisible READ isLineVisible CONSTANT) Q_PROPERTY(PropertyItem * allowDiagonal READ allowDiagonal CONSTANT) - Q_PROPERTY(PropertyItem * beginingHookType READ beginingHookType CONSTANT) + Q_PROPERTY(PropertyItem * startHookType READ startHookType CONSTANT) Q_PROPERTY(PropertyItem * endHookType READ endHookType CONSTANT) Q_PROPERTY(PropertyItem * hookHeight READ hookHeight CONSTANT) @@ -71,7 +71,7 @@ public: PropertyItem* isLineVisible() const; PropertyItem* allowDiagonal() const; - PropertyItem* beginingHookType() const; + PropertyItem* startHookType() const; PropertyItem* endHookType() const; PropertyItem* hookHeight() const; @@ -87,6 +87,7 @@ public: PropertyItem* endTextHorizontalOffset() const; PropertyItem* endTextVerticalOffset() const; + Q_INVOKABLE QVariantList possibleStartHookTypes() const; Q_INVOKABLE QVariantList possibleEndHookTypes() const; protected: @@ -97,7 +98,17 @@ protected: }; struct HookTypeInfo { - Ms::HookType type = Ms::HookType::NONE; + HookTypeInfo(Ms::HookType type, ui::IconCode::Code icon) + : type(static_cast(type)), icon(icon) + { + } + + HookTypeInfo(int type, ui::IconCode::Code icon) + : type(type), icon(icon) + { + } + + int type = 0; ui::IconCode::Code icon = ui::IconCode::Code::NONE; }; @@ -106,12 +117,14 @@ protected: void resetProperties() override; virtual void onUpdateLinePropertiesAvailability(); - virtual bool isTextVisible(TextType type) const; - void setPossibleHookTypes(const QList& types); + void setPossibleStartHookTypes(const QList& types); + void setPossibleEndHookTypes(const QList& types); private: + QVariantList hookTypesToObjList(const QList& types) const; + PropertyItem* m_lineStyle = nullptr; PropertyItem* m_placement = nullptr; @@ -122,7 +135,7 @@ private: PropertyItem* m_isLineVisible = nullptr; PropertyItem* m_allowDiagonal = nullptr; - PropertyItem* m_beginingHookType = nullptr; + PropertyItem* m_startHookType = nullptr; PropertyItem* m_endHookType = nullptr; PropertyItem* m_hookHeight = nullptr; @@ -138,7 +151,8 @@ private: PropertyItem* m_endTextHorizontalOffset = nullptr; PropertyItem* m_endTextVerticalOffset = nullptr; - QList m_possibleHookTypes; + QVariantList m_possibleStartHookTypes; + QVariantList m_possibleEndHookTypes; }; } diff --git a/src/inspector/models/notation/lines/ottavasettingsmodel.cpp b/src/inspector/models/notation/lines/ottavasettingsmodel.cpp index 803d1130ce..e7f1671aff 100644 --- a/src/inspector/models/notation/lines/ottavasettingsmodel.cpp +++ b/src/inspector/models/notation/lines/ottavasettingsmodel.cpp @@ -42,7 +42,7 @@ OttavaSettingsModel::OttavaSettingsModel(QObject* parent, IElementRepositoryServ { Ms::HookType::HOOK_45, IconCode::LINE_WITH_ANGLED_END_HOOK } }; - setPossibleHookTypes(hookTypes); + setPossibleEndHookTypes(hookTypes); createProperties(); } diff --git a/src/inspector/models/notation/lines/palmmutesettingsmodel.cpp b/src/inspector/models/notation/lines/palmmutesettingsmodel.cpp index cedb2be2b6..9f50da9a03 100644 --- a/src/inspector/models/notation/lines/palmmutesettingsmodel.cpp +++ b/src/inspector/models/notation/lines/palmmutesettingsmodel.cpp @@ -36,7 +36,7 @@ void PalmMuteSettingsModel::createProperties() { LineSettingsModel::createProperties(); - beginingHookType()->setIsVisible(false); + startHookType()->setIsVisible(false); endHookType()->setIsVisible(false); beginingTextHorizontalOffset()->setIsVisible(false); diff --git a/src/inspector/models/notation/lines/pedalsettingsmodel.cpp b/src/inspector/models/notation/lines/pedalsettingsmodel.cpp index 2ba95b3a0e..ee71da9bd5 100644 --- a/src/inspector/models/notation/lines/pedalsettingsmodel.cpp +++ b/src/inspector/models/notation/lines/pedalsettingsmodel.cpp @@ -22,13 +22,16 @@ #include "pedalsettingsmodel.h" #include "translation.h" - #include "ui/view/iconcodes.h" +#include "libmscore/pedal.h" + using namespace mu::inspector; using IconCode = mu::ui::IconCode::Code; +static constexpr int HOOK_STAR = static_cast(Ms::HookType::HOOK_90T) + 1; + PedalSettingsModel::PedalSettingsModel(QObject* parent, IElementRepositoryService* repository) : LineSettingsModel(parent, repository, Ms::ElementType::PEDAL) { @@ -36,54 +39,102 @@ PedalSettingsModel::PedalSettingsModel(QObject* parent, IElementRepositoryServic setTitle(qtrc("inspector", "Pedal")); setIcon(ui::IconCode::Code::PEDAL_MARKING); - static const QList hookTypes { + static const QList startHookTypes { + { Ms::HookType::NONE, IconCode::LINE_NORMAL }, + { Ms::HookType::HOOK_45, IconCode::LINE_WITH_ANGLED_START_HOOK }, + { Ms::HookType::HOOK_90T, IconCode::LINE_WITH_T_LINE_START_HOOK } + }; + + setPossibleStartHookTypes(startHookTypes); + + static const QList endHookTypes { { Ms::HookType::NONE, IconCode::LINE_NORMAL }, { Ms::HookType::HOOK_90, IconCode::LINE_WITH_END_HOOK }, { Ms::HookType::HOOK_45, IconCode::LINE_WITH_ANGLED_END_HOOK }, - { Ms::HookType::HOOK_90T, IconCode::LINE_PEDAL_STAR_ENDING } + { Ms::HookType::HOOK_90T, IconCode::LINE_WITH_T_LIKE_END_HOOK }, + { HOOK_STAR, IconCode::LINE_PEDAL_STAR_ENDING } }; - setPossibleHookTypes(hookTypes); + setPossibleEndHookTypes(endHookTypes); createProperties(); } -PropertyItem* PedalSettingsModel::showPedalSymbol() const +PropertyItem* PedalSettingsModel::lineType() const { - return m_showPedalSymbol; + return m_lineType; } -PropertyItem* PedalSettingsModel::showLineWithRosette() const +bool PedalSettingsModel::pedalSymbolVisible() const { - return m_showLineWithRosette; + return beginingText()->value().toString() == Ms::Pedal::PEDAL_SYMBOL; } -bool PedalSettingsModel::showLineWithRosetteVisible() const +bool PedalSettingsModel::isChangingLineVisibilityAllowed() const { - return m_showLineWithRosetteVisible; + return isStarSymbolVisible(); +} + +bool PedalSettingsModel::isStarSymbolVisible() const +{ + return endText()->value().toString() == Ms::Pedal::STAR_SYMBOL; +} + +void PedalSettingsModel::setPedalSymbolVisible(bool visible) +{ + beginingText()->setValue(visible ? Ms::Pedal::PEDAL_SYMBOL : ""); } void PedalSettingsModel::createProperties() { LineSettingsModel::createProperties(); - //! TODO: determine suitable properties - m_showPedalSymbol = buildPropertyItem(Ms::Pid::SYMBOL); - m_showLineWithRosette = buildPropertyItem(Ms::Pid::SYMBOL); + connect(beginingText(), &PropertyItem::isModifiedChanged, this, [this]() { + emit pedalSymbolVisibleChanged(); + }); + + connect(endText(), &PropertyItem::isModifiedChanged, this, [this]() { + emit isChangingLineVisibilityAllowedChanged(); + }); + + m_lineType = buildPropertyItem(Ms::Pid::END, [this](const Ms::Pid, const QVariant& newValue) { + setLineType(newValue.toInt()); + }); } void PedalSettingsModel::loadProperties() { LineSettingsModel::loadProperties(); - loadPropertyItem(m_showPedalSymbol); - loadPropertyItem(m_showLineWithRosette); + m_lineType->setIsEnabled(true); + + if (isStarSymbolVisible()) { + m_lineType->setValue(HOOK_STAR); + } else { + m_lineType->setValue(endHookType()->value()); + } } -void PedalSettingsModel::resetProperties() +void PedalSettingsModel::setLineType(int newType) { - LineSettingsModel::resetProperties(); + bool rosetteHookSelected = (newType == HOOK_STAR); + int hookType = newType; + QString text = QString(); - m_showPedalSymbol->resetToDefault(); - m_showLineWithRosette->resetToDefault(); + if (rosetteHookSelected) { + hookType = static_cast(Ms::HookType::NONE); + text = Ms::Pedal::STAR_SYMBOL; + startHookType()->setValue(hookType); + } + + endHookType()->setValue(hookType); + endText()->setValue(text); + isLineVisible()->setValue(!rosetteHookSelected); + + m_lineType->setValue(newType); +} + +bool PedalSettingsModel::isTextVisible(TextType) const +{ + return true; } diff --git a/src/inspector/models/notation/lines/pedalsettingsmodel.h b/src/inspector/models/notation/lines/pedalsettingsmodel.h index d4f37d23fa..ce2bef677b 100644 --- a/src/inspector/models/notation/lines/pedalsettingsmodel.h +++ b/src/inspector/models/notation/lines/pedalsettingsmodel.h @@ -29,30 +29,34 @@ class PedalSettingsModel : public LineSettingsModel { Q_OBJECT - Q_PROPERTY(PropertyItem * showPedalSymbol READ showPedalSymbol CONSTANT) - Q_PROPERTY(PropertyItem * showLineWithRosette READ showLineWithRosette CONSTANT) - - Q_PROPERTY(bool showLineWithRosetteVisible READ showLineWithRosetteVisible NOTIFY showLineWithRosetteVisibleChanged) + Q_PROPERTY(PropertyItem* lineType READ lineType CONSTANT) + Q_PROPERTY(bool pedalSymbolVisible READ pedalSymbolVisible WRITE setPedalSymbolVisible NOTIFY pedalSymbolVisibleChanged) + Q_PROPERTY(bool isChangingLineVisibilityAllowed READ isChangingLineVisibilityAllowed NOTIFY isChangingLineVisibilityAllowedChanged) public: explicit PedalSettingsModel(QObject* parent, IElementRepositoryService* repository); - PropertyItem* showPedalSymbol() const; - PropertyItem* showLineWithRosette() const; + PropertyItem* lineType() const; + bool pedalSymbolVisible() const; + bool isChangingLineVisibilityAllowed() const; - bool showLineWithRosetteVisible() const; +public slots: + void setPedalSymbolVisible(bool visible); signals: - void showLineWithRosetteVisibleChanged(); + void pedalSymbolVisibleChanged(); + void isChangingLineVisibilityAllowedChanged(); private: + bool isStarSymbolVisible() const; + void createProperties() override; void loadProperties() override; - void resetProperties() override; + bool isTextVisible(TextType type) const override; - PropertyItem* m_showPedalSymbol = nullptr; - PropertyItem* m_showLineWithRosette = nullptr; - bool m_showLineWithRosetteVisible = false; + void setLineType(int newType); + + PropertyItem* m_lineType = nullptr; }; } diff --git a/src/inspector/models/notation/lines/voltasettingsmodel.cpp b/src/inspector/models/notation/lines/voltasettingsmodel.cpp index 13a77027e7..926f0985f7 100644 --- a/src/inspector/models/notation/lines/voltasettingsmodel.cpp +++ b/src/inspector/models/notation/lines/voltasettingsmodel.cpp @@ -41,7 +41,7 @@ VoltaSettingsModel::VoltaSettingsModel(QObject* parent, IElementRepositoryServic { Ms::HookType::HOOK_90, IconCode::LINE_WITH_TWO_INVERTED_HOOKS }, }; - setPossibleHookTypes(hookTypes); + setPossibleEndHookTypes(hookTypes); createProperties(); } diff --git a/src/inspector/view/qml/MuseScore/Inspector/notation/lines/PedalSettings.qml b/src/inspector/view/qml/MuseScore/Inspector/notation/lines/PedalSettings.qml index 30e6632f05..bc8eae96ce 100644 --- a/src/inspector/view/qml/MuseScore/Inspector/notation/lines/PedalSettings.qml +++ b/src/inspector/view/qml/MuseScore/Inspector/notation/lines/PedalSettings.qml @@ -39,32 +39,35 @@ Column { spacing: 12 CheckBox { - isIndeterminate: root.model && root.model.showPedalSymbol.isUndefined - checked: root.model && !isIndeterminate && root.model.showPedalSymbol.value + checked: root.model && root.model.pedalSymbolVisible text: qsTrc("inspector", "Show pedal symbol") onClicked: { - root.model.showPedalSymbol.value = !checked + root.model.pedalSymbolVisible = !checked } } LineTypeSection { - endHookType: root.model ? root.model.endHookType : null + startHookType: root.model ? root.model.startHookType : null + endHookType: root.model ? root.model.lineType : null + thickness: root.model ? root.model.thickness : null hookHeight: root.model ? root.model.hookHeight : null + + possibleStartHookTypes: root.model ? root.model.possibleStartHookTypes() : null possibleEndHookTypes: root.model ? root.model.possibleEndHookTypes() : null } CheckBox { - isIndeterminate: root.model && root.model.showLineWithRosette.isUndefined - checked: root.model && !isIndeterminate && root.model.showLineWithRosette.value - visible: root.model & root.model.showLineWithRosetteVisible + isIndeterminate: root.model && root.model.isLineVisible.isUndefined + checked: root.model && !isIndeterminate && root.model.isLineVisible.value + visible: root.model && root.model.isChangingLineVisibilityAllowed text: qsTrc("inspector", "Show line with rosette") onClicked: { - root.model.showLineWithRosette.value = !checked + root.model.isLineVisible.value = !checked } } diff --git a/src/inspector/view/qml/MuseScore/Inspector/notation/lines/internal/LineTypeSection.qml b/src/inspector/view/qml/MuseScore/Inspector/notation/lines/internal/LineTypeSection.qml index 8d01fc8a76..8996951461 100644 --- a/src/inspector/view/qml/MuseScore/Inspector/notation/lines/internal/LineTypeSection.qml +++ b/src/inspector/view/qml/MuseScore/Inspector/notation/lines/internal/LineTypeSection.qml @@ -32,10 +32,12 @@ import "../../../common" Column { id: root + property PropertyItem startHookType: null property PropertyItem endHookType: null property PropertyItem thickness: null property PropertyItem hookHeight: null + property alias possibleStartHookTypes: startHookButtonGroup.model property alias possibleEndHookTypes: lineTypeButtonGroup.model width: parent.width @@ -49,6 +51,13 @@ Column { propertyItem: root.endHookType } + FlatRadioButtonGroupPropertyView { + id: startHookButtonGroup + + titleText: qsTrc("inspector", "Start hook") + propertyItem: root.startHookType + } + Item { height: childrenRect.height width: parent.width diff --git a/src/palette/internal/palettecreator.cpp b/src/palette/internal/palettecreator.cpp index 4ddec3e6b9..0ae744ccbf 100644 --- a/src/palette/internal/palettecreator.cpp +++ b/src/palette/internal/palettecreator.cpp @@ -1042,16 +1042,16 @@ PalettePtr PaletteCreator::newLinesPalette() auto pedal = makeElement(gpaletteScore); pedal->setLen(w); - pedal->setBeginText("keyboardPedalPed"); - pedal->setContinueText("(keyboardPedalPed)"); + pedal->setBeginText(Pedal::PEDAL_SYMBOL); + pedal->setContinueText(QString("(%1)").arg(Pedal::PEDAL_SYMBOL)); pedal->setEndHookType(HookType::HOOK_90); sp->appendElement(pedal, QT_TRANSLATE_NOOP("palette", "Pedal (with ped and line)")); pedal = makeElement(gpaletteScore); pedal->setLen(w); - pedal->setBeginText("keyboardPedalPed"); - pedal->setContinueText("(keyboardPedalPed)"); - pedal->setEndText("keyboardPedalUp"); + pedal->setBeginText(Pedal::PEDAL_SYMBOL); + pedal->setContinueText(QString("(%1)").arg(Pedal::PEDAL_SYMBOL)); + pedal->setEndText(Pedal::STAR_SYMBOL); pedal->setLineVisible(false); sp->appendElement(pedal, QT_TRANSLATE_NOOP("palette", "Pedal (with ped and asterisk)"));