Skip to content

Commit 4d742f0

Browse files
committed
Refine align and position buttons in edit style
1 parent 748af5c commit 4d742f0

File tree

9 files changed

+363
-475
lines changed

9 files changed

+363
-475
lines changed

src/notation/view/widgets/alignSelect.cpp

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,22 @@ AlignSelect::AlignSelect(QWidget* parent)
3434
{
3535
setupUi(this);
3636

37-
g1 = new QButtonGroup(this);
38-
g1->addButton(alignLeft);
39-
g1->addButton(alignHCenter);
40-
g1->addButton(alignRight);
41-
g1->addButton(alignJustify);
42-
43-
g2 = new QButtonGroup(this);
44-
g2->addButton(alignTop);
45-
g2->addButton(alignVCenter);
46-
g2->addButton(alignBaseline);
47-
g2->addButton(alignBottom);
37+
horizontalAlignButtons = new QButtonGroup(this);
38+
horizontalAlignButtons->addButton(alignLeft);
39+
horizontalAlignButtons->addButton(alignHCenter);
40+
horizontalAlignButtons->addButton(alignRight);
41+
horizontalAlignButtons->addButton(alignJustify);
42+
43+
verticalAlignButtons = new QButtonGroup(this);
44+
verticalAlignButtons->addButton(alignTop);
45+
verticalAlignButtons->addButton(alignVCenter);
46+
verticalAlignButtons->addButton(alignBaseline);
47+
verticalAlignButtons->addButton(alignBottom);
48+
49+
positionButtons = new QButtonGroup(this);
50+
positionButtons->addButton(positionLeft);
51+
positionButtons->addButton(positionHCenter);
52+
positionButtons->addButton(positionRight);
4853

4954
WidgetUtils::setWidgetIcon(alignLeft, IconCode::Code::TEXT_ALIGN_LEFT);
5055
WidgetUtils::setWidgetIcon(alignRight, IconCode::Code::TEXT_ALIGN_RIGHT);
@@ -54,16 +59,25 @@ AlignSelect::AlignSelect(QWidget* parent)
5459
WidgetUtils::setWidgetIcon(alignTop, IconCode::Code::TEXT_ALIGN_TOP);
5560
WidgetUtils::setWidgetIcon(alignBaseline, IconCode::Code::TEXT_ALIGN_BASELINE);
5661
WidgetUtils::setWidgetIcon(alignBottom, IconCode::Code::TEXT_ALIGN_BOTTOM);
62+
WidgetUtils::setWidgetIcon(positionLeft, IconCode::Code::ALIGN_LEFT);
63+
WidgetUtils::setWidgetIcon(positionRight, IconCode::Code::ALIGN_RIGHT);
64+
WidgetUtils::setWidgetIcon(positionHCenter, IconCode::Code::ALIGN_HORIZONTAL_CENTER);
5765

58-
connect(g1, &QButtonGroup::buttonToggled, this, &AlignSelect::_alignChanged);
59-
connect(g2, &QButtonGroup::buttonToggled, this, &AlignSelect::_alignChanged);
66+
connect(horizontalAlignButtons, &QButtonGroup::buttonToggled, this, &AlignSelect::_alignChanged);
67+
connect(verticalAlignButtons, &QButtonGroup::buttonToggled, this, &AlignSelect::_alignChanged);
68+
connect(positionButtons, &QButtonGroup::buttonToggled, this, &AlignSelect::_positionChanged);
6069
}
6170

6271
void AlignSelect::_alignChanged()
6372
{
6473
emit alignChanged(align());
6574
}
6675

76+
void AlignSelect::_positionChanged()
77+
{
78+
emit positionChanged(position());
79+
}
80+
6781
mu::engraving::Align AlignSelect::align() const
6882
{
6983
mu::engraving::Align a = { mu::engraving::AlignH::LEFT, mu::engraving::AlignV::TOP };
@@ -84,6 +98,17 @@ mu::engraving::Align AlignSelect::align() const
8498
return a;
8599
}
86100

101+
mu::engraving::AlignH AlignSelect::position() const
102+
{
103+
mu::engraving::AlignH position = mu::engraving::AlignH::LEFT;
104+
if (positionHCenter->isChecked()) {
105+
position = mu::engraving::AlignH::HCENTER;
106+
} else if (positionRight->isChecked()) {
107+
position = mu::engraving::AlignH::RIGHT;
108+
}
109+
return position;
110+
}
111+
87112
void AlignSelect::setAlign(mu::engraving::Align a)
88113
{
89114
blockAlign(true);
@@ -108,8 +133,26 @@ void AlignSelect::setAlign(mu::engraving::Align a)
108133
blockAlign(false);
109134
}
110135

136+
void AlignSelect::setPosition(mu::engraving::AlignH a)
137+
{
138+
blockPosition(true);
139+
if (a == mu::engraving::AlignH::HCENTER) {
140+
positionHCenter->setChecked(true);
141+
} else if (a == mu::engraving::AlignH::RIGHT) {
142+
positionRight->setChecked(true);
143+
} else {
144+
positionLeft->setChecked(true);
145+
}
146+
blockPosition(false);
147+
}
148+
111149
void AlignSelect::blockAlign(bool val)
112150
{
113-
g1->blockSignals(val);
114-
g2->blockSignals(val);
151+
horizontalAlignButtons->blockSignals(val);
152+
verticalAlignButtons->blockSignals(val);
153+
}
154+
155+
void AlignSelect::blockPosition(bool val)
156+
{
157+
positionButtons->blockSignals(val);
115158
}

src/notation/view/widgets/alignSelect.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,26 @@ class AlignSelect : public QWidget, public Ui::AlignSelect, public muse::Injecta
3434
public:
3535
AlignSelect(QWidget* parent);
3636
mu::engraving::Align align() const;
37+
mu::engraving::AlignH position() const;
38+
3739
void setAlign(mu::engraving::Align);
40+
void setPosition(mu::engraving::AlignH);
3841

3942
signals:
4043
void alignChanged(mu::engraving::Align);
44+
void positionChanged(mu::engraving::AlignH);
4145

4246
private:
43-
QButtonGroup* g1;
44-
QButtonGroup* g2;
47+
QButtonGroup* horizontalAlignButtons;
48+
QButtonGroup* verticalAlignButtons;
49+
QButtonGroup* positionButtons;
4550

4651
void blockAlign(bool val);
52+
void blockPosition(bool val);
4753

4854
private slots:
4955
void _alignChanged();
56+
void _positionChanged();
5057
};
5158
}
5259

src/notation/view/widgets/align_select.ui

Lines changed: 120 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>200</width>
10-
<height>32</height>
9+
<width>300</width>
10+
<height>64</height>
1111
</rect>
1212
</property>
1313
<layout class="QHBoxLayout" name="horizontalLayout">
@@ -33,6 +33,19 @@
3333
<property name="spacing">
3434
<number>0</number>
3535
</property>
36+
<item>
37+
<spacer name="horizontalSpacer">
38+
<property name="orientation">
39+
<enum>Qt::Orientation::Horizontal</enum>
40+
</property>
41+
<property name="sizeHint" stdset="0">
42+
<size>
43+
<width>40</width>
44+
<height>20</height>
45+
</size>
46+
</property>
47+
</spacer>
48+
</item>
3649
<item>
3750
<widget class="QPushButton" name="alignLeft">
3851
<property name="minimumSize">
@@ -48,7 +61,7 @@
4861
</size>
4962
</property>
5063
<property name="toolTip">
51-
<string>Align left edge of text to reference point</string>
64+
<string>Left-align text within its bounding box</string>
5265
</property>
5366
<property name="checkable">
5467
<bool>true</bool>
@@ -73,7 +86,7 @@
7386
</size>
7487
</property>
7588
<property name="toolTip">
76-
<string>Center text on reference point</string>
89+
<string>Horizontally center text within its bounding box</string>
7790
</property>
7891
<property name="checkable">
7992
<bool>true</bool>
@@ -98,7 +111,7 @@
98111
</size>
99112
</property>
100113
<property name="toolTip">
101-
<string>Align right edge of text to reference point</string>
114+
<string>Right align text within its bounding box</string>
102115
</property>
103116
<property name="checkable">
104117
<bool>true</bool>
@@ -108,7 +121,7 @@
108121
</property>
109122
</widget>
110123
</item>
111-
<item>
124+
<item>
112125
<widget class="QPushButton" name="alignJustify">
113126
<property name="minimumSize">
114127
<size>
@@ -133,15 +146,97 @@
133146
</property>
134147
</widget>
135148
</item>
149+
<item>
150+
<widget class="QPushButton" name="positionLeft">
151+
<property name="minimumSize">
152+
<size>
153+
<width>28</width>
154+
<height>28</height>
155+
</size>
156+
</property>
157+
<property name="maximumSize">
158+
<size>
159+
<width>28</width>
160+
<height>28</height>
161+
</size>
162+
</property>
163+
<property name="toolTip">
164+
<string>Left-align text box to reference point</string>
165+
</property>
166+
<property name="checkable">
167+
<bool>true</bool>
168+
</property>
169+
<property name="flat">
170+
<bool>true</bool>
171+
</property>
172+
</widget>
173+
</item>
174+
<item>
175+
<widget class="QPushButton" name="positionHCenter">
176+
<property name="minimumSize">
177+
<size>
178+
<width>28</width>
179+
<height>28</height>
180+
</size>
181+
</property>
182+
<property name="maximumSize">
183+
<size>
184+
<width>28</width>
185+
<height>28</height>
186+
</size>
187+
</property>
188+
<property name="toolTip">
189+
<string>Horizontally center text box on reference point</string>
190+
</property>
191+
<property name="checkable">
192+
<bool>true</bool>
193+
</property>
194+
<property name="flat">
195+
<bool>true</bool>
196+
</property>
197+
</widget>
198+
</item>
199+
<item>
200+
<widget class="QPushButton" name="positionRight">
201+
<property name="minimumSize">
202+
<size>
203+
<width>28</width>
204+
<height>28</height>
205+
</size>
206+
</property>
207+
<property name="maximumSize">
208+
<size>
209+
<width>28</width>
210+
<height>28</height>
211+
</size>
212+
</property>
213+
<property name="toolTip">
214+
<string>Right-align text box to reference point</string>
215+
</property>
216+
<property name="checkable">
217+
<bool>true</bool>
218+
</property>
219+
<property name="flat">
220+
<bool>true</bool>
221+
</property>
222+
</widget>
223+
</item>
224+
</layout>
225+
</item>
226+
<item>
227+
<layout class="QHBoxLayout" name="horizontalLayout_5">
228+
<property name="spacing">
229+
<number>0</number>
230+
</property>
136231
<item>
137232
<spacer name="horizontalSpacer_2">
138233
<property name="orientation">
139-
<enum>Qt::Horizontal</enum>
234+
<enum>Qt::Orientation::Horizontal</enum>
140235
</property>
141236
<property name="sizeHint" stdset="0">
142237
<size>
143-
<width>0</width>
144-
<height>0</height>
238+
<width>40</width>
239+
<height>20</height>
145240
</size>
146241
</property>
147242
</spacer>
@@ -246,6 +341,22 @@
246341
</property>
247342
</widget>
248343
</item>
344+
<item>
345+
<spacer name="horizontalSpacer_3">
346+
<property name="orientation">
347+
<enum>Qt::Orientation::Horizontal</enum>
348+
</property>
349+
<property name="sizeType">
350+
<enum>QSizePolicy::Policy::Fixed</enum>
351+
</property>
352+
<property name="sizeHint" stdset="0">
353+
<size>
354+
<width>84</width>
355+
<height>20</height>
356+
</size>
357+
</property>
358+
</spacer>
359+
</item>
249360
</layout>
250361
</item>
251362
</layout>

src/notation/view/widgets/editstyle.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,6 +1051,7 @@ EditStyle::EditStyle(QWidget* parent)
10511051
connect(buttonGroup, &QButtonGroup::buttonClicked, setSignalMapper, mapFunction);
10521052
} else if (auto alignSelect = qobject_cast<AlignSelect*>(sw.widget)) {
10531053
connect(alignSelect, &AlignSelect::alignChanged, setSignalMapper, mapFunction);
1054+
connect(alignSelect, &AlignSelect::positionChanged, setSignalMapper, mapFunction);
10541055
} else if (auto offsetSelect = qobject_cast<OffsetSelect*>(sw.widget)) {
10551056
connect(offsetSelect, &OffsetSelect::offsetChanged, setSignalMapper, mapFunction);
10561057
} else if (auto fontStyle = qobject_cast<FontStyleSelect*>(sw.widget)) {
@@ -1145,8 +1146,8 @@ EditStyle::EditStyle(QWidget* parent)
11451146
textStyleValueChanged(TextStylePropertyType::TextAlign, textStyleAlign->align());
11461147
});
11471148

1148-
connect(textPositionSelect, &TextPositionSelect::positionChanged, this, [=]() {
1149-
textStyleValueChanged(TextStylePropertyType::Position, textPositionSelect->position());
1149+
connect(textStyleAlign, &AlignSelect::positionChanged, this, [=]() {
1150+
textStyleValueChanged(TextStylePropertyType::Position, textStyleAlign->position());
11501151
});
11511152

11521153
// offset
@@ -2762,7 +2763,7 @@ void EditStyle::textStyleChanged(int row)
27622763
break;
27632764

27642765
case TextStylePropertyType::Position:
2765-
textPositionSelect->setPosition(styleValue(a.sid).value<AlignH>());
2766+
textStyleAlign->setPosition(styleValue(a.sid).value<AlignH>());
27662767
resetTextStyleAlign->setEnabled(styleValue(a.sid) != defaultStyleValue(a.sid));
27672768
break;
27682769

0 commit comments

Comments
 (0)