Skip to content

Commit 9007e53

Browse files
committed
Introduce horizontal option
1 parent 813fc38 commit 9007e53

File tree

9 files changed

+226
-129
lines changed

9 files changed

+226
-129
lines changed

src/engraving/rendering/score/systemheaderlayout.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,8 @@ void SystemHeaderLayout::computeGroupBracketsWidths(System* system, LayoutContex
386386

387387
std::sort(groupBrackets.begin(), groupBrackets.end(), [](Bracket* b1, Bracket* b2) { return b1->column() < b2->column(); });
388388

389-
bool hangIntoMargin = ctx.conf().styleB(Sid::groupBracketHangTextIntoMargin);
389+
bool hangIntoMargin = ctx.conf().styleB(Sid::groupBracketHangTextIntoMargin)
390+
&& ctx.conf().styleV(Sid::groupBracketTextOrientation).value<Orientation>() == Orientation::VERTICAL;
390391
double bracketDistToNames = ctx.conf().styleAbsolute(Sid::groupBracketDistanceToNames);
391392

392393
for (staff_idx_t staffIdx = 0; staffIdx < system->staves().size(); ++staffIdx) {
@@ -921,8 +922,10 @@ void SystemHeaderLayout::setGroupBracketsHorizontalPos(System* system)
921922
}
922923
std::sort(groupBrackets.begin(), groupBrackets.end(), [](Bracket* b1, Bracket* b2) { return b1->column() > b2->column(); });
923924

924-
bool intoMargin = system->style().styleB(Sid::groupBracketHangTextIntoMargin);
925-
double bracketsDist = system->style().styleAbsolute(Sid::groupBracketDistanceToGroupBracket);
925+
const MStyle& style = system->style();
926+
bool intoMargin = style.styleB(Sid::groupBracketHangTextIntoMargin)
927+
&& style.styleV(Sid::groupBracketTextOrientation).value<Orientation>() == Orientation::VERTICAL;
928+
double bracketsDist = style.styleAbsolute(Sid::groupBracketDistanceToGroupBracket);
926929

927930
for (Bracket* b : groupBrackets) {
928931
b->mutldata()->setPosX(intoMargin ? 0.0 : -b->mutldata()->bbox().left());

src/engraving/rendering/score/tlayout.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,19 +1501,26 @@ void TLayout::layoutGroupBracket(const Bracket* item, Bracket::LayoutData* ldata
15011501

15021502
Text* text = item->text();
15031503
text->setVisible(item->bracketItem()->visible() && item->bracketItem()->showText());
1504-
text->setAlign(Align(AlignH::HCENTER, AlignV::VCENTER));
1504+
text->setAlign(Align(text->align().horizontal, AlignV::VCENTER));
15051505
text->setPosition(AlignH::HCENTER);
1506-
text->setTextAngle(-90);
1506+
1507+
Orientation textOrientation = conf.styleV(Sid::groupBracketTextOrientation).value<Orientation>();
1508+
text->setTextAngle(textOrientation == Orientation::VERTICAL ? -90.0 : 0.0);
15071509

15081510
double textPadding = 0.5 * item->spatium();
15091511
double bracketHeight = item->ldata()->bbox().height();
15101512
double minHeight = bracketHeight - 6 * textPadding;
15111513

1512-
text->setXmlText(item->bracketItem()->longName());
1513-
layoutText(text, text->mutldata());
1514-
if (text->ldata()->bbox().height() > minHeight) {
1515-
text->setXmlText(item->bracketItem()->shortName());
1514+
if (textOrientation == Orientation::HORIZONTAL) {
1515+
text->setXmlText(item->system()->ldata()->useLongNames() ? item->bracketItem()->longName() : item->bracketItem()->shortName());
1516+
layoutText(text, text->mutldata());
1517+
} else {
1518+
text->setXmlText(item->bracketItem()->longName());
15161519
layoutText(text, text->mutldata());
1520+
if (text->ldata()->bbox().height() > minHeight) {
1521+
text->setXmlText(item->bracketItem()->shortName());
1522+
layoutText(text, text->mutldata());
1523+
}
15171524
}
15181525

15191526
text->mutldata()->setPosY(bracketHeight / 2);

src/engraving/style/style.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ bool MStyle::readProperties(XmlReader& e)
184184
case P_TYPE::DIRECTION_H:
185185
set(idx, DirectionH(e.readText().toInt()));
186186
break;
187+
case P_TYPE::ORIENTATION:
188+
set(idx, TConv::fromXml(e.readAsciiText(), Orientation::HORIZONTAL));
189+
break;
187190
case P_TYPE::HOOK_TYPE:
188191
set(idx, HookType(e.readText().toInt()));
189192
break;
@@ -744,6 +747,8 @@ void MStyle::save(XmlWriter& xml, bool optimize)
744747
xml.tag(st.xmlName, value(idx).value<Spatium>().val());
745748
} else if (P_TYPE::DIRECTION_V == type) {
746749
xml.tag(st.xmlName, int(value(idx).value<DirectionV>()));
750+
} else if (P_TYPE::ORIENTATION == type) {
751+
xml.tag(st.xmlName, TConv::toXml(value(idx).value<Orientation>()));
747752
} else if (P_TYPE::ALIGN == type) {
748753
Align a = value(idx).value<Align>();
749754
// Don't write if it's the default value

src/engraving/style/styledef.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ const std::array<StyleDef::StyleValue, size_t(Sid::STYLES)> StyleDef::styleValue
175175
styleDef(akkoladeBarDistance, 0.35_sp),
176176
styleDef(groupBracketLineWidth, 0.11_sp),
177177
styleDef(groupBracketHookLen, 1.0_sp),
178+
styleDef(groupBracketTextOrientation, Orientation::VERTICAL),
178179
styleDef(groupBracketTextAlign, DirectionH::AUTO),
179180
styleDef(groupBracketHangTextIntoMargin, true),
180181
styleDef(groupBracketDistanceToNames, 1.0_sp),
@@ -1137,15 +1138,15 @@ const std::array<StyleDef::StyleValue, size_t(Sid::STYLES)> StyleDef::styleValue
11371138
styleDef(groupBracketFontSpatiumDependent, true),
11381139
styleDef(groupBracketFontStyle, int(FontStyle::Normal)),
11391140
styleDef(groupBracketColor, PropertyValue::fromValue(Color::BLACK)),
1140-
styleDef(groupBracketAlign, Align(AlignH::RIGHT, AlignV::BASELINE)),
1141+
styleDef(groupBracketAlign, Align(AlignH::HCENTER, AlignV::VCENTER)),
11411142
styleDef(groupBracketOffset, PointF(.0, .0)),
11421143
styleDef(groupBracketFrameType, int(FrameType::NO_FRAME)),
11431144
styleDef(groupBracketFramePadding, 0.2_sp),
11441145
styleDef(groupBracketFrameWidth, 0.1_sp),
11451146
styleDef(groupBracketFrameRound, 0.0_sp),
11461147
styleDef(groupBracketFrameFgColor, PropertyValue::fromValue(Color::BLACK)),
11471148
styleDef(groupBracketFrameBgColor, PropertyValue::fromValue(Color::transparent)),
1148-
styleDef(groupBracketPosition, AlignH::RIGHT),
1149+
styleDef(groupBracketPosition, AlignH::HCENTER),
11491150

11501151
// OBSOLETE after version 4.1. Dynamic text now takes its setting from expression.
11511152
styleDef(dynamicsFontFace, "Edwin"),

src/engraving/style/styledef.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ enum class Sid : short {
183183
akkoladeBarDistance,
184184
groupBracketLineWidth,
185185
groupBracketHookLen,
186+
groupBracketTextOrientation,
186187
groupBracketTextAlign,
187188
groupBracketHangTextIntoMargin,
188189
groupBracketDistanceToNames,

src/framework/uicomponents/qml/Muse/UiComponents/TextInputArea.qml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ FocusScope {
3535

3636
property bool hasText: valueInput.text.length > 0
3737

38+
property int initialHeight: 90
3839
property bool resizeVerticallyWithText: false
3940
property bool allowNewLineByEnter: true
4041

@@ -78,7 +79,7 @@ FocusScope {
7879
}
7980
}
8081

81-
implicitHeight: root.resizeVerticallyWithText ? Math.max(valueInput.height, 90) : 90
82+
implicitHeight: root.resizeVerticallyWithText ? Math.max(valueInput.height, initialHeight) : initialHeight
8283
implicitWidth: parent.width
8384

8485
height: implicitHeight

src/inspector/qml/MuseScore/Inspector/notation/brackets/BracketSettings.qml

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -109,28 +109,38 @@ Column {
109109
propertyItem: root.model ? root.model.showBracket : null
110110
}
111111

112-
TextSection {
113-
id: longNameSection
112+
StyledTextLabel {
114113
visible: root.model ? root.model.isGroupBracket : false
115114
enabled: root.model ? root.model.areSettingsAvailable : false
116-
117-
titleText: qsTrc("inspector", "Long name")
118-
propertyItem: root.model ? root.model.longName : null
119-
120-
navigationPanel: root.navigationPanel
121-
navigationRowStart: spanSection.navigationRowEnd + 1
115+
text: qsTrc("inspector", "Long name")
122116
}
123117

124-
TextSection {
125-
id: shortNameSection
118+
TextInputArea {
126119
visible: root.model ? root.model.isGroupBracket : false
127120
enabled: root.model ? root.model.areSettingsAvailable : false
121+
initialHeight: 0
122+
resizeVerticallyWithText: true
123+
currentText: root.model ? root.model.longName.value : ""
124+
onTextEditingFinished: function(newText) {
125+
root.model.longName.value = newText
126+
}
127+
}
128128

129-
titleText: qsTrc("inspector", "Abbreviated name")
130-
propertyItem: root.model ? root.model.shortName : null
129+
StyledTextLabel {
130+
visible: root.model ? root.model.isGroupBracket : false
131+
enabled: root.model ? root.model.areSettingsAvailable : false
132+
text: qsTrc("inspector", "Abbreviated name")
133+
}
131134

132-
navigationPanel: root.navigationPanel
133-
navigationRowStart: longNameSection.navigationRowEnd + 1
135+
TextInputArea {
136+
visible: root.model ? root.model.isGroupBracket : false
137+
enabled: root.model ? root.model.areSettingsAvailable : false
138+
initialHeight: 0
139+
resizeVerticallyWithText: true
140+
currentText: root.model ? root.model.shortName.value : ""
141+
onTextEditingFinished: function(newText) {
142+
root.model.shortName.value = newText
143+
}
134144
}
135145

136146
StyledTextLabel {

src/notationscene/widgets/editstyle.cpp

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -334,14 +334,23 @@ void EditStyle::classBegin()
334334
groupBracketTextAlign->addButton(groupBracketTextCenter, 0);
335335
groupBracketTextAlign->addButton(groupBracketTextRight, 2);
336336

337+
QButtonGroup* groupBracketOrientation = new QButtonGroup(this);
338+
groupBracketOrientation->addButton(groupBracketTextVertical, 0);
339+
groupBracketOrientation->addButton(groupBracketTextHorizontal, 1);
340+
337341
QButtonGroup* groupBracketTextPos = new QButtonGroup(this);
338342
groupBracketTextPos->addButton(groupBracketHangIntoMargin, true);
339343
groupBracketTextPos->addButton(groupBracketKeepInMargin, false);
340344

341-
connect(groupBracketTextAlign, &QButtonGroup::buttonClicked, this, [&](QAbstractButton*) {
342-
groupBracketHangIntoMargin->setEnabled(!groupBracketTextRight->isChecked());
343-
groupBracketKeepInMargin->setEnabled(!groupBracketTextRight->isChecked());
344-
});
345+
auto updateHangIntoMarginEnabled = [&]() {
346+
bool rightAlign = groupBracketTextRight->isChecked();
347+
bool vertical = groupBracketTextVertical->isChecked();
348+
groupBracketHangIntoMargin->setEnabled(vertical && !rightAlign);
349+
groupBracketKeepInMargin->setEnabled(vertical && !rightAlign);
350+
};
351+
352+
connect(groupBracketTextAlign, &QButtonGroup::buttonClicked, this, updateHangIntoMarginEnabled);
353+
connect(groupBracketOrientation, &QButtonGroup::buttonClicked, this, updateHangIntoMarginEnabled);
345354

346355
// ====================================================
347356
// Style widgets
@@ -505,8 +514,9 @@ void EditStyle::classBegin()
505514
{ StyleId::groupBracketHookLen, false, groupBracketHookLen, groupBracketHookLenReset },
506515
{ StyleId::groupBracketTextAlign, false, groupBracketTextAlign, 0 },
507516
{ StyleId::groupBracketHangTextIntoMargin, false, groupBracketTextPos, 0 },
508-
{ StyleId::groupBracketDistanceToNames, false, groupBracketDistanceToNames },
509-
{ StyleId::groupBracketDistanceToGroupBracket, false, groupBracketDistanceToBrackets },
517+
{ StyleId::groupBracketDistanceToNames, false, groupBracketDistanceToNames, groupBracketDistanceToNamesReset },
518+
{ StyleId::groupBracketDistanceToGroupBracket, false, groupBracketDistanceToBrackets, groupBracketDistanceToBracketsReset },
519+
{ StyleId::groupBracketTextOrientation, false, groupBracketOrientation },
510520

511521
{ StyleId::dividerLeft, false, dividerLeft, 0 },
512522
{ StyleId::dividerLeftX, false, dividerLeftX, dividerLeftXReset },
@@ -1815,6 +1825,7 @@ PropertyValue EditStyle::getValue(StyleId idx)
18151825
case P_TYPE::PLACEMENT_H:
18161826
case P_TYPE::PLACEMENT_V:
18171827
case P_TYPE::DIRECTION_H:
1828+
case P_TYPE::ORIENTATION:
18181829
case P_TYPE::LINE_TYPE:
18191830
case P_TYPE::TIMESIG_PLACEMENT:
18201831
case P_TYPE::TIMESIG_STYLE:
@@ -1935,6 +1946,7 @@ void EditStyle::setValues()
19351946
case P_TYPE::PLACEMENT_H:
19361947
case P_TYPE::PLACEMENT_V:
19371948
case P_TYPE::DIRECTION_H:
1949+
case P_TYPE::ORIENTATION:
19381950
case P_TYPE::BARLINE_TYPE:
19391951
case P_TYPE::LINE_TYPE:
19401952
case P_TYPE::HOOK_TYPE:
@@ -2084,8 +2096,10 @@ void EditStyle::setValues()
20842096
updateParenthesisIndicatingTiesGroupState();
20852097

20862098
bool textBracketRight = styleValue(StyleId::groupBracketTextAlign).value<DirectionH>() == DirectionH::RIGHT;
2087-
groupBracketHangIntoMargin->setEnabled(!textBracketRight);
2088-
groupBracketKeepInMargin->setEnabled(!textBracketRight);
2099+
bool vertical = styleValue(StyleId::groupBracketTextOrientation).value<mu::engraving::Orientation>()
2100+
== mu::engraving::Orientation::VERTICAL;
2101+
groupBracketHangIntoMargin->setEnabled(vertical && !textBracketRight);
2102+
groupBracketKeepInMargin->setEnabled(vertical && !textBracketRight);
20892103
}
20902104

20912105
//---------------------------------------------------------

0 commit comments

Comments
 (0)