From 562add1c4f6dc99da8648c2b7d1edb0249631d02 Mon Sep 17 00:00:00 2001 From: Matt McClinch Date: Thu, 1 Nov 2018 14:15:36 -0400 Subject: [PATCH] fix #276461: Custom text styles in previous versions of MS changed to User-1, User-2 etc. --- libmscore/read206.cpp | 7 +++ libmscore/style.cpp | 6 +++ libmscore/style.h | 6 +++ mscore/editstyle.cpp | 63 ++++++++++++++++++++--- mscore/editstyle.h | 1 + mscore/editstyle.ui | 81 +++++++++++++++++------------- mscore/inspector/inspector.cpp | 25 ++++++--- mscore/inspector/inspectorText.cpp | 25 ++++++--- 8 files changed, 161 insertions(+), 53 deletions(-) diff --git a/libmscore/read206.cpp b/libmscore/read206.cpp index d9327290daa0c..72ec4eaedd25b 100644 --- a/libmscore/read206.cpp +++ b/libmscore/read206.cpp @@ -611,6 +611,13 @@ void readTextStyle206(MStyle* style, XmlReader& e) qDebug("unhandled substyle <%s>", qPrintable(name)); return; } + int idx = int(ss) - int(Tid::USER1); + if ((idx < 0) || (idx > 5)) { + qDebug("User style index %d outside of range [0,5].", idx); + return; + } + Sid sid[] = { Sid::user1Name, Sid::user2Name, Sid::user3Name, Sid::user4Name, Sid::user5Name, Sid::user6Name }; + style->set(sid[idx], name); } for (const auto& i : *textStyle(ss)) { diff --git a/libmscore/style.cpp b/libmscore/style.cpp index 664994fbfa0ce..a9c6b5fe0c9e7 100644 --- a/libmscore/style.cpp +++ b/libmscore/style.cpp @@ -956,6 +956,7 @@ static const StyleType styleTypes[] { { Sid::figuredBassFontItalic, "figuredBassFontItalic", false }, { Sid::figuredBassFontUnderline, "figuredBassFontUnderline", false }, + { Sid::user1Name, "user1Name", "" }, { Sid::user1FontFace, "user1FontFace", "FreeSerif" }, { Sid::user1FontSize, "user1FontSize", 10.0 }, { Sid::user1FontBold, "user1FontBold", false }, @@ -971,6 +972,7 @@ static const StyleType styleTypes[] { { Sid::user1FrameFgColor, "user1FrameFgColor", QColor(0, 0, 0, 255) }, { Sid::user1FrameBgColor, "user1FrameBgColor", QColor(255, 255, 255, 0) }, + { Sid::user2Name, "user2Name", "" }, { Sid::user2FontFace, "user2FontFace", "FreeSerif" }, { Sid::user2FontSize, "user2FontSize", 10.0 }, { Sid::user2FontBold, "user2FontBold", false }, @@ -986,6 +988,7 @@ static const StyleType styleTypes[] { { Sid::user2FrameFgColor, "user2FrameFgColor", QColor(0, 0, 0, 255) }, { Sid::user2FrameBgColor, "user2FrameBgColor", QColor(255, 255, 255, 0) }, + { Sid::user3Name, "user3Name", "" }, { Sid::user3FontFace, "user3FontFace", "FreeSerif" }, { Sid::user3FontSize, "user3FontSize", 10.0 }, { Sid::user3FontBold, "user3FontBold", false }, @@ -1001,6 +1004,7 @@ static const StyleType styleTypes[] { { Sid::user3FrameFgColor, "user3FrameFgColor", QColor(0, 0, 0, 255) }, { Sid::user3FrameBgColor, "user3FrameBgColor", QColor(255, 255, 255, 0) }, + { Sid::user4Name, "user4Name", "" }, { Sid::user4FontFace, "user4FontFace", "FreeSerif" }, { Sid::user4FontSize, "user4FontSize", 10.0 }, { Sid::user4FontBold, "user4FontBold", false }, @@ -1016,6 +1020,7 @@ static const StyleType styleTypes[] { { Sid::user4FrameFgColor, "user4FrameFgColor", QColor(0, 0, 0, 255) }, { Sid::user4FrameBgColor, "user4FrameBgColor", QColor(255, 255, 255, 0) }, + { Sid::user5Name, "user5Name", "" }, { Sid::user5FontFace, "user5FontFace", "FreeSerif" }, { Sid::user5FontSize, "user5FontSize", 10.0 }, { Sid::user5FontBold, "user5FontBold", false }, @@ -1031,6 +1036,7 @@ static const StyleType styleTypes[] { { Sid::user5FrameFgColor, "user5FrameFgColor", QColor(0, 0, 0, 255) }, { Sid::user5FrameBgColor, "user5FrameBgColor", QColor(255, 255, 255, 0) }, + { Sid::user6Name, "user6Name", "" }, { Sid::user6FontFace, "user6FontFace", "FreeSerif" }, { Sid::user6FontSize, "user6FontSize", 10.0 }, { Sid::user6FontBold, "user6FontBold", false }, diff --git a/libmscore/style.h b/libmscore/style.h index 90cf1a8923c97..3b46778afcf4c 100644 --- a/libmscore/style.h +++ b/libmscore/style.h @@ -938,6 +938,7 @@ enum class Sid { figuredBassFontItalic, figuredBassFontUnderline, + user1Name, user1FontFace, user1FontSize, user1FontBold, @@ -953,6 +954,7 @@ enum class Sid { user1FrameFgColor, user1FrameBgColor, + user2Name, user2FontFace, user2FontSize, user2FontBold, @@ -968,6 +970,7 @@ enum class Sid { user2FrameFgColor, user2FrameBgColor, + user3Name, user3FontFace, user3FontSize, user3FontBold, @@ -983,6 +986,7 @@ enum class Sid { user3FrameFgColor, user3FrameBgColor, + user4Name, user4FontFace, user4FontSize, user4FontBold, @@ -998,6 +1002,7 @@ enum class Sid { user4FrameFgColor, user4FrameBgColor, + user5Name, user5FontFace, user5FontSize, user5FontBold, @@ -1013,6 +1018,7 @@ enum class Sid { user5FrameFgColor, user5FrameBgColor, + user6Name, user6FontFace, user6FontSize, user6FontBold, diff --git a/mscore/editstyle.cpp b/mscore/editstyle.cpp index e5e212b5075fb..a006e16aac274 100644 --- a/mscore/editstyle.cpp +++ b/mscore/editstyle.cpp @@ -618,18 +618,32 @@ EditStyle::EditStyle(Score* s, QWidget* parent) Tid::TRANSLATOR, Tid::HEADER, Tid::FOOTER, - Tid::USER1, - Tid::USER2, - Tid::USER3, - Tid::USER4, - Tid::USER5, - Tid::USER6 } ) { QListWidgetItem* item = new QListWidgetItem(textStyleUserName(ss)); item->setData(Qt::UserRole, int(ss)); textStyles->addItem(item); } + struct { + Sid sid; + Tid tid; + } userStyles[] = { + { Sid::user1Name, Tid::USER1 }, + { Sid::user2Name, Tid::USER2 }, + { Sid::user3Name, Tid::USER3 }, + { Sid::user4Name, Tid::USER4 }, + { Sid::user5Name, Tid::USER5 }, + { Sid::user6Name, Tid::USER6 } + }; + for (auto user : userStyles) + { + QString name = s->styleSt(user.sid); + if (name == "") + name = textStyleUserName(user.tid); + QListWidgetItem* item = new QListWidgetItem(name); + item->setData(Qt::UserRole, int(user.tid)); + textStyles->addItem(item); + } // font face resetTextStyleFontFace->setIcon(*icons[int(Icons::reset_ICON)]); @@ -736,6 +750,7 @@ EditStyle::EditStyle(Score* s, QWidget* parent) [=](){ textStyleValueChanged(Pid::FRAME_BG_COLOR, textStyleFrameBackground->color()); } ); + connect(styleName, SIGNAL(editingFinished()), SLOT(renameUserStyle())); connect(textStyles, SIGNAL(currentRowChanged(int)), SLOT(textStyleChanged(int))); textStyles->setCurrentRow(0); MuseScore::restoreGeometry(this); @@ -1413,6 +1428,19 @@ void EditStyle::textStyleChanged(int row) break; } } + if (int(tid) >= int(Tid::USER1)) { + int idx = int(tid) - int(Tid::USER1); + Sid sid[] = { Sid::user1Name, Sid::user2Name, Sid::user3Name, Sid::user4Name, Sid::user5Name, Sid::user6Name }; + QString name = cs->styleSt(sid[idx]); + if (name == "") + name = textStyleUserName(tid); + styleName->setText(name); + styleName->setEnabled(true); + } + else { + styleName->setText(textStyleUserName(tid)); + styleName->setEnabled(false); + } } //--------------------------------------------------------- @@ -1452,5 +1480,28 @@ void EditStyle::resetTextStyle(Pid pid) textStyleChanged(textStyles->currentRow()); // update GUI cs->update(); } + +//--------------------------------------------------------- +// resetTextStyle +//--------------------------------------------------------- + +void EditStyle::renameUserStyle() + { + int row = textStyles->currentRow(); + Tid tid = Tid(textStyles->item(row)->data(Qt::UserRole).toInt()); + int idx = int(tid) - int(Tid::USER1); + if ((idx < 0) || (idx > 5)) { + qDebug("User style index %d outside of range [0,5].", idx); + return; + } + Sid sid[] = { Sid::user1Name, Sid::user2Name, Sid::user3Name, Sid::user4Name, Sid::user5Name, Sid::user6Name }; + QString name = styleName->text(); + cs->undoChangeStyleVal(sid[idx], name); + if (name == "") + name = textStyleUserName(tid); + textStyles->item(row)->setText(name); + cs->update(); + } + } //namespace Ms diff --git a/mscore/editstyle.h b/mscore/editstyle.h index 8f1c946b33150..2634652a7aa5d 100644 --- a/mscore/editstyle.h +++ b/mscore/editstyle.h @@ -79,6 +79,7 @@ class EditStyle : public QDialog, private Ui::EditStyleBase { void textStyleValueChanged(Pid, QVariant); void on_comboFBFont_currentIndexChanged(int index); void on_buttonTogglePagelist_clicked(); + void renameUserStyle(); public: static const int PAGE_NOTE = 6; diff --git a/mscore/editstyle.ui b/mscore/editstyle.ui index 10976d494b8fe..8247f381d9a4c 100644 --- a/mscore/editstyle.ui +++ b/mscore/editstyle.ui @@ -11975,38 +11975,38 @@ 0 - + - + Background: - + Frame: - + Text margin: - + Border: - + @@ -12109,7 +12109,7 @@ - + Reset to default @@ -12126,7 +12126,7 @@ - + Style: @@ -12136,14 +12136,14 @@ - + Align: - + Reset to default @@ -12160,7 +12160,7 @@ - + Reset to default @@ -12177,10 +12177,10 @@ - + - + Size: @@ -12190,14 +12190,14 @@ - + Font face: - + @@ -12210,7 +12210,7 @@ - + sp @@ -12220,7 +12220,7 @@ - + Qt::Vertical @@ -12233,36 +12233,36 @@ - + - + - + - + - + Border radius: - + Foreground: - + - + Reset to default @@ -12279,7 +12279,7 @@ - + Reset to default @@ -12296,7 +12296,7 @@ - + Reset to default @@ -12313,7 +12313,7 @@ - + Reset to default @@ -12330,7 +12330,7 @@ - + Reset to default @@ -12347,7 +12347,7 @@ - + Reset to default @@ -12364,17 +12364,17 @@ - + Offset: - + - + Reset to default @@ -12391,14 +12391,14 @@ - + Size changes with spatium - + Reset to default @@ -12415,6 +12415,17 @@ + + + + Name: + + + + + + + diff --git a/mscore/inspector/inspector.cpp b/mscore/inspector/inspector.cpp index 26ab9824e64be..9a61004f8bd15 100644 --- a/mscore/inspector/inspector.cpp +++ b/mscore/inspector/inspector.cpp @@ -1098,16 +1098,29 @@ InspectorStaffText::InspectorStaffText(QWidget* parent) Tid::TRANSLATOR, Tid::HEADER, Tid::FOOTER, - Tid::USER1, - Tid::USER2, - Tid::USER3, - Tid::USER4, - Tid::USER5, - Tid::USER6 } ) { s.style->addItem(textStyleUserName(ss), int(ss)); } + struct { + Sid sid; + Tid tid; + } userStyles[] = { + { Sid::user1Name, Tid::USER1 }, + { Sid::user2Name, Tid::USER2 }, + { Sid::user3Name, Tid::USER3 }, + { Sid::user4Name, Tid::USER4 }, + { Sid::user5Name, Tid::USER5 }, + { Sid::user6Name, Tid::USER6 } + }; + Score* score = inspector->element()->score(); + for (auto user : userStyles) + { + QString name = score->styleSt(user.sid); + if (name == "") + name = textStyleUserName(user.tid); + s.style->addItem(name, int(user.tid)); + } mapSignals(il, ppList); } diff --git a/mscore/inspector/inspectorText.cpp b/mscore/inspector/inspectorText.cpp index 082f51b28133b..2d0b3614f28d5 100644 --- a/mscore/inspector/inspectorText.cpp +++ b/mscore/inspector/inspectorText.cpp @@ -45,16 +45,29 @@ InspectorText::InspectorText(QWidget* parent) Tid::TRANSLATOR, Tid::HEADER, Tid::FOOTER, - Tid::USER1, - Tid::USER2, - Tid::USER3, - Tid::USER4, - Tid::USER5, - Tid::USER6 } ) { f.style->addItem(textStyleUserName(ss), int(ss)); } + struct { + Sid sid; + Tid tid; + } userStyles[] = { + { Sid::user1Name, Tid::USER1 }, + { Sid::user2Name, Tid::USER2 }, + { Sid::user3Name, Tid::USER3 }, + { Sid::user4Name, Tid::USER4 }, + { Sid::user5Name, Tid::USER5 }, + { Sid::user6Name, Tid::USER6 } + }; + Score* score = inspector->element()->score(); + for (auto user : userStyles) + { + QString name = score->styleSt(user.sid); + if (name == "") + name = textStyleUserName(user.tid); + f.style->addItem(name, int(user.tid)); + } mapSignals(iiList, ppList); }