Skip to content

Commit

Permalink
Merge pull request #4159 from MarcSabatella/278023-text-style-usability
Browse files Browse the repository at this point in the history
fix #278023: text style usability issues
  • Loading branch information
anatoly-os committed Nov 24, 2018
2 parents 972e2ae + 953fa0d commit b94e68f
Show file tree
Hide file tree
Showing 12 changed files with 253 additions and 115 deletions.
72 changes: 70 additions & 2 deletions libmscore/style.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ struct StyleType {
const QVariant& defaultValue() const { return _defaultValue; }
};

//---------------------------------------------------------
// styleTypes
//
// Keep in sync with sid in style.h
//---------------------------------------------------------


static const StyleType styleTypes[] {
{ Sid::pageWidth, "pageWidth", 210.0/INCH },
{ Sid::pageHeight, "pageHeight", 297.0/INCH }, // A4
Expand Down Expand Up @@ -1171,7 +1178,7 @@ const TextStyle composerTextStyle {{
const TextStyle lyricistTextStyle {{
{ Sid::lyricistFontFace, Pid::FONT_FACE },
{ Sid::lyricistFontSize, Pid::FONT_SIZE },
{ Sid::defaultFontSpatiumDependent, Pid::SIZE_SPATIUM_DEPENDENT },
{ Sid::lyricistFontSpatiumDependent, Pid::SIZE_SPATIUM_DEPENDENT },
{ Sid::lyricistFontBold, Pid::FONT_BOLD },
{ Sid::lyricistFontItalic, Pid::FONT_ITALIC },
{ Sid::lyricistFontUnderline, Pid::FONT_UNDERLINE },
Expand Down Expand Up @@ -1382,7 +1389,7 @@ const TextStyle tempoTextStyle {{
{ Sid::tempoFontItalic, Pid::FONT_ITALIC },
{ Sid::tempoFontUnderline, Pid::FONT_UNDERLINE },
{ Sid::tempoAlign, Pid::ALIGN },
{ Sid::tempoOffset, Pid::OFFSET },
{ Sid::tempoPosAbove, Pid::OFFSET },
{ Sid::tempoFrameType, Pid::FRAME_TYPE },
{ Sid::tempoFramePadding, Pid::FRAME_PADDING },
{ Sid::tempoFrameWidth, Pid::FRAME_WIDTH },
Expand Down Expand Up @@ -2026,6 +2033,67 @@ QString textStyleUserName(Tid idx)
return qApp->translate("TextStyle", textStyleName(idx));
}

static std::vector<Tid> _allTextStyles;

static const std::vector<Tid> _primaryTextStyles = {
Tid::TITLE,
Tid::SUBTITLE,
Tid::COMPOSER,
Tid::POET,
Tid::TRANSLATOR,
Tid::FRAME,
Tid::HEADER,
Tid::FOOTER,
Tid::MEASURE_NUMBER,
Tid::INSTRUMENT_EXCERPT,
Tid::INSTRUMENT_CHANGE,
Tid::STAFF,
Tid::SYSTEM,
Tid::EXPRESSION,
Tid::DYNAMICS,
Tid::HAIRPIN,
Tid::TEMPO,
Tid::REHEARSAL_MARK,
Tid::REPEAT_LEFT,
Tid::REPEAT_RIGHT,
Tid::LYRICS_ODD,
Tid::LYRICS_EVEN,
Tid::HARMONY_A,
Tid::HARMONY_B,
Tid::USER1,
Tid::USER2,
Tid::USER3,
Tid::USER4,
Tid::USER5,
Tid::USER6
};

//---------------------------------------------------------
// allTextStyles
//---------------------------------------------------------

const std::vector<Tid>& allTextStyles()
{
if (_allTextStyles.empty()) {
_allTextStyles.reserve(int(Tid::TEXT_STYLES));
for (const auto& s : textStyles) {
if (s.tid == Tid::DEFAULT)
continue;
_allTextStyles.push_back(s.tid);
}
}
return _allTextStyles;
}

//---------------------------------------------------------
// primaryTextStyles
//---------------------------------------------------------

const std::vector<Tid>& primaryTextStyles()
{
return _primaryTextStyles;
}

//---------------------------------------------------------
// valueType
//---------------------------------------------------------
Expand Down
3 changes: 3 additions & 0 deletions libmscore/style.h
Original file line number Diff line number Diff line change
Expand Up @@ -1197,6 +1197,9 @@ const char* textStyleName(Tid);
QString textStyleUserName(Tid);
Tid textStyleFromName(const QString&);

const std::vector<Tid>& allTextStyles();
const std::vector<Tid>& primaryTextStyles();

#ifndef NDEBUG
extern void checkStyles();
#endif
Expand Down
27 changes: 1 addition & 26 deletions mscore/editstyle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -600,32 +600,7 @@ EditStyle::EditStyle(Score* s, QWidget* parent)
connect(mapper, SIGNAL(mapped(int)), SLOT(resetStyleValue(int)));
connect(mapper2, SIGNAL(mapped(int)), SLOT(valueChanged(int)));
textStyles->clear();
for (auto ss : {
Tid::SYSTEM,
Tid::STAFF,
Tid::TEMPO,
Tid::METRONOME,
Tid::REHEARSAL_MARK,
Tid::EXPRESSION,
Tid::REPEAT_LEFT,
Tid::REPEAT_RIGHT,
Tid::FRAME,
Tid::TITLE,
Tid::SUBTITLE,
Tid::COMPOSER,
Tid::POET,
Tid::INSTRUMENT_EXCERPT,
Tid::TRANSLATOR,
Tid::HEADER,
Tid::FOOTER,
Tid::USER1,
Tid::USER2,
Tid::USER3,
Tid::USER4,
Tid::USER5,
Tid::USER6
} )
{
for (auto ss : allTextStyles()) {
QListWidgetItem* item = new QListWidgetItem(textStyleUserName(ss));
item->setData(Qt::UserRole, int(ss));
textStyles->addItem(item);
Expand Down
56 changes: 20 additions & 36 deletions mscore/inspector/inspector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,7 @@ void Inspector::update(Score* s)
case ElementType::STAFF_TEXT:
case ElementType::SYSTEM_TEXT:
case ElementType::REHEARSAL_MARK:
case ElementType::INSTRUMENT_CHANGE:
ie = new InspectorStaffText(this);
break;
case ElementType::MEASURE_NUMBER:
Expand Down Expand Up @@ -349,9 +350,6 @@ void Inspector::update(Score* s)
case ElementType::NOTEDOT:
ie = new InspectorNoteDot(this);
break;
case ElementType::INSTRUMENT_CHANGE:
ie = new InspectorInstrumentChange(this);
break;
default:
if (element()->isText())
ie = new InspectorText(this);
Expand Down Expand Up @@ -1006,12 +1004,18 @@ InspectorTempoText::InspectorTempoText(QWidget* parent)
const std::vector<InspectorItem> il = {
{ Pid::TEMPO, 0, tt.tempo, tt.resetTempo },
{ Pid::TEMPO_FOLLOW_TEXT, 0, tt.followText, tt.resetFollowText },
{ Pid::SUB_STYLE, 0, tt.style, tt.resetStyle },
{ Pid::PLACEMENT, 0, tt.placement, tt.resetPlacement }
};
const std::vector<InspectorPanel> ppList = {
{ tt.title, tt.panel }
};
populatePlacement(tt.placement);

tt.style->clear();
for (auto ss : primaryTextStyles())
tt.style->addItem(textStyleUserName(ss), int(ss));

mapSignals(il, ppList);
connect(tt.followText, SIGNAL(toggled(bool)), tt.tempo, SLOT(setDisabled(bool)));
}
Expand All @@ -1038,13 +1042,19 @@ InspectorLyric::InspectorLyric(QWidget* parent)
l.setupUi(addWidget());

const std::vector<InspectorItem> il = {
{ Pid::PLACEMENT, 0, l.placement, l.resetPlacement },
{ Pid::VERSE, 0, l.verse, l.resetVerse }
{ Pid::VERSE, 0, l.verse, l.resetVerse },
{ Pid::SUB_STYLE, 0, l.style, l.resetStyle },
{ Pid::PLACEMENT, 0, l.placement, l.resetPlacement }
};
const std::vector<InspectorPanel> ppList = {
{ l.title, l.panel }
};
populatePlacement(l.placement);

l.style->clear();
for (auto ss : primaryTextStyles())
l.style->addItem(textStyleUserName(ss), int(ss));

mapSignals(il, ppList);
connect(t.resetToStyle, SIGNAL(clicked()), SLOT(resetToStyle()));
}
Expand All @@ -1062,52 +1072,26 @@ InspectorStaffText::InspectorStaffText(QWidget* parent)
bool sameTypes = true;

for (const auto& ee : *inspector->el()) {
if (el->isSystemText() != ee->isSystemText()) {
if (el->type() != ee->type() || el->isSystemText() != ee->isSystemText()) {
sameTypes = false;
break;
}
}
if (sameTypes)
s.title->setText(el->isSystemText() ? tr("System Text") : tr("Staff Text"));
s.title->setText(el->userName());

const std::vector<InspectorItem> il = {
{ Pid::PLACEMENT, 0, s.placement, s.resetPlacement },
{ Pid::SUB_STYLE, 0, s.style, s.resetStyle }
{ Pid::SUB_STYLE, 0, s.style, s.resetStyle },
{ Pid::PLACEMENT, 0, s.placement, s.resetPlacement }
};
const std::vector<InspectorPanel> ppList = {
{ s.title, s.panel }
};
populatePlacement(s.placement);

s.style->clear();
for (auto ss : {
Tid::SYSTEM,
Tid::STAFF,
Tid::TEMPO,
Tid::METRONOME,
Tid::REHEARSAL_MARK,
Tid::EXPRESSION,
Tid::REPEAT_LEFT,
Tid::REPEAT_RIGHT,
Tid::FRAME,
Tid::TITLE,
Tid::SUBTITLE,
Tid::COMPOSER,
Tid::POET,
Tid::INSTRUMENT_EXCERPT,
Tid::TRANSLATOR,
Tid::HEADER,
Tid::FOOTER,
Tid::USER1,
Tid::USER2,
Tid::USER3,
Tid::USER4,
Tid::USER5,
Tid::USER6
} )
{
for (auto ss : primaryTextStyles())
s.style->addItem(textStyleUserName(ss), int(ss));
}

mapSignals(il, ppList);
}
Expand Down
6 changes: 6 additions & 0 deletions mscore/inspector/inspectorDynamic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,18 @@ InspectorDynamic::InspectorDynamic(QWidget* parent)
const std::vector<InspectorItem> il = {
{ Pid::DYNAMIC_RANGE, 0, d.dynRange, d.resetDynRange },
{ Pid::VELOCITY, 0, d.velocity, 0 },
{ Pid::SUB_STYLE, 0, d.style, d.resetStyle },
{ Pid::PLACEMENT, 0, d.placement, d.resetPlacement }
};
const std::vector<InspectorPanel> ppList = {
{ d.title, d.panel }
};
populatePlacement(d.placement);

d.style->clear();
for (auto ss : primaryTextStyles())
d.style->addItem(textStyleUserName(ss), int(ss));

mapSignals(il, ppList);
}

Expand Down
2 changes: 0 additions & 2 deletions mscore/inspector/inspectorFingering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ InspectorFingering::InspectorFingering(QWidget* parent)

f.style->clear();
for (auto ss : { Tid::FINGERING, Tid::LH_GUITAR_FINGERING, Tid::RH_GUITAR_FINGERING, Tid::STRING_NUMBER } )
{
f.style->addItem(textStyleUserName(ss), int(ss));
}

mapSignals(iiList, ppList);
}
Expand Down
3 changes: 1 addition & 2 deletions mscore/inspector/inspectorHarmony.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,8 @@ InspectorHarmony::InspectorHarmony(QWidget* parent)
};

h.style->clear();
for (auto ss : { Tid::HARMONY_A, Tid::HARMONY_B } ) {
for (auto ss : primaryTextStyles())
h.style->addItem(textStyleUserName(ss), int(ss));
}

t.resetToStyle->setVisible(false);

Expand Down
20 changes: 1 addition & 19 deletions mscore/inspector/inspectorText.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,26 +35,8 @@ InspectorText::InspectorText(QWidget* parent)
};

f.style->clear();
for (auto ss : {
Tid::FRAME,
Tid::TITLE,
Tid::SUBTITLE,
Tid::COMPOSER,
Tid::POET,
Tid::INSTRUMENT_EXCERPT,
Tid::TRANSLATOR,
Tid::HEADER,
Tid::FOOTER,
Tid::USER1,
Tid::USER2,
Tid::USER3,
Tid::USER4,
Tid::USER5,
Tid::USER6
} )
{
for (auto ss : primaryTextStyles())
f.style->addItem(textStyleUserName(ss), int(ss));
}

mapSignals(iiList, ppList);
}
Expand Down
Loading

0 comments on commit b94e68f

Please sign in to comment.