Line data Source code
1 : /*
2 : * SPDX-License-Identifier: GPL-3.0-only
3 : * MuseScore-Studio-CLA-applies
4 : *
5 : * MuseScore Studio
6 : * Music Composition & Notation
7 : *
8 : * Copyright (C) 2021 MuseScore Limited and others
9 : *
10 : * This program is free software: you can redistribute it and/or modify
11 : * it under the terms of the GNU General Public License version 3 as
12 : * published by the Free Software Foundation.
13 : *
14 : * This program is distributed in the hope that it will be useful,
15 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : * GNU General Public License for more details.
18 : *
19 : * You should have received a copy of the GNU General Public License
20 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 : */
22 :
23 : #include "property.h"
24 :
25 : #include "translation.h"
26 :
27 : #include "types/typesconv.h"
28 :
29 : #include "accidental.h"
30 : #include "bracket.h"
31 : #include "note.h"
32 : #include "ottava.h"
33 :
34 : #include "log.h"
35 :
36 : using namespace mu;
37 : using namespace mu::engraving;
38 :
39 : namespace mu::engraving {
40 : //---------------------------------------------------------
41 : // PropertyMetaData
42 : //---------------------------------------------------------
43 :
44 : struct PropertyMetaData {
45 : Pid id; // associated Pid
46 : P_TYPE type; // associated P_TYPE
47 : PropertyGroup group;
48 : bool link; // link this property for linked elements
49 : const char* name; // xml name of property
50 : const char* userName; // user-visible name of property
51 : };
52 :
53 : //
54 : // always: propertyList[subtype].id == subtype
55 : //
56 : //
57 :
58 : /* *INDENT-OFF* */
59 : static constexpr PropertyMetaData propertyList[] = {
60 : { Pid::SUBTYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "subtype") },
61 : { Pid::SELECTED, P_TYPE::BOOL, PropertyGroup::NONE, false, "selected", QT_TRANSLATE_NOOP("engraving/propertyName", "selected") },
62 : { Pid::GENERATED, P_TYPE::BOOL, PropertyGroup::NONE, false, "generated", QT_TRANSLATE_NOOP("engraving/propertyName", "generated") },
63 : { Pid::COLOR, P_TYPE::COLOR, PropertyGroup::APPEARANCE, false, "color", QT_TRANSLATE_NOOP("engraving/propertyName", "color") },
64 : { Pid::VISIBLE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "visible", QT_TRANSLATE_NOOP("engraving/propertyName", "visible") },
65 : { Pid::Z, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "z", QT_TRANSLATE_NOOP("engraving/propertyName", "stacking order") },
66 : { Pid::SMALL, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "small", QT_TRANSLATE_NOOP("engraving/propertyName", "small") },
67 : { Pid::HIDE_WHEN_EMPTY, P_TYPE::AUTO_ON_OFF, PropertyGroup::APPEARANCE, false, "hideWhenEmpty", QT_TRANSLATE_NOOP("engraving/propertyName", "hide when empty") },
68 : { Pid::HIDE_STAVES_WHEN_INDIVIDUALLY_EMPTY, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "hideStavesWhenIndividuallyEmpty", QT_TRANSLATE_NOOP("engraving/propertyName", "hide staves when individually empty") },
69 : { Pid::SHOW_IF_ENTIRE_SYSTEM_EMPTY, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "showIfEntireSystemEmpty", QT_TRANSLATE_NOOP("engraving/propertyName", "show if entire system empty") },
70 : { Pid::SHOW_COURTESY, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "showCourtesySig", QT_TRANSLATE_NOOP("engraving/propertyName", "show courtesy") },
71 : { Pid::KEYSIG_MODE, P_TYPE::KEY_MODE, PropertyGroup::APPEARANCE, false, "keysig_mode", QT_TRANSLATE_NOOP("engraving/propertyName", "key signature mode") },
72 : { Pid::SLUR_STYLE_TYPE, P_TYPE::SLUR_STYLE_TYPE, PropertyGroup::APPEARANCE, false, "lineType", QT_TRANSLATE_NOOP("engraving/propertyName", "line type") },
73 : { Pid::PITCH, P_TYPE::INT, PropertyGroup::NONE, true, "pitch", QT_TRANSLATE_NOOP("engraving/propertyName", "pitch") },
74 : { Pid::CENT_OFFSET, P_TYPE::REAL, PropertyGroup::NONE, true, "centOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "cent offset") },
75 :
76 : { Pid::TPC1, P_TYPE::INT, PropertyGroup::NONE, true, "tpc", QT_TRANSLATE_NOOP("engraving/propertyName", "tonal pitch class") },
77 : { Pid::TPC2, P_TYPE::INT, PropertyGroup::NONE, true, "tpc2", QT_TRANSLATE_NOOP("engraving/propertyName", "transposed tonal pitch class") },
78 : { Pid::LINE, P_TYPE::INT, PropertyGroup::NONE, false, "line", QT_TRANSLATE_NOOP("engraving/propertyName", "line") },
79 : { Pid::FIXED, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "fixed", QT_TRANSLATE_NOOP("engraving/propertyName", "fixed") },
80 : { Pid::FIXED_LINE, P_TYPE::INT, PropertyGroup::NONE , true, "fixedLine", QT_TRANSLATE_NOOP("engraving/propertyName", "fixed line") },
81 : { Pid::HEAD_TYPE, P_TYPE::NOTEHEAD_TYPE, PropertyGroup::APPEARANCE, false, "headType", QT_TRANSLATE_NOOP("engraving/propertyName", "head type") },
82 : { Pid::HEAD_GROUP, P_TYPE::NOTEHEAD_GROUP, PropertyGroup::APPEARANCE, true, "head", QT_TRANSLATE_NOOP("engraving/propertyName", "head") },
83 : { Pid::VELO_TYPE, P_TYPE::VELO_TYPE, PropertyGroup::APPEARANCE, false, "veloType", QT_TRANSLATE_NOOP("engraving/propertyName", "velocity type") },
84 : { Pid::USER_VELOCITY, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "velocity", QT_TRANSLATE_NOOP("engraving/propertyName", "velocity") },
85 : { Pid::ARTICULATION_ANCHOR, P_TYPE::INT, PropertyGroup::POSITION, false, "anchor", QT_TRANSLATE_NOOP("engraving/propertyName", "anchor") },
86 :
87 : { Pid::DIRECTION, P_TYPE::DIRECTION_V, PropertyGroup::POSITION, false, "direction", QT_TRANSLATE_NOOP("engraving/propertyName", "direction") },
88 : { Pid::HORIZONTAL_DIRECTION, P_TYPE::DIRECTION_H, PropertyGroup::POSITION, false, "horizontalDirection", QT_TRANSLATE_NOOP("engraving/propertyName", "horizontal direction") },
89 : { Pid::STEM_DIRECTION, P_TYPE::DIRECTION_V, PropertyGroup::APPEARANCE, false, "StemDirection", QT_TRANSLATE_NOOP("engraving/propertyName", "stem direction") },
90 : { Pid::NO_STEM, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "noStem", QT_TRANSLATE_NOOP("engraving/propertyName", "stemless") },
91 : { Pid::SLUR_DIRECTION, P_TYPE::DIRECTION_V, PropertyGroup::POSITION, false, "up", QT_TRANSLATE_NOOP("engraving/propertyName", "up") },
92 : { Pid::LEADING_SPACE, P_TYPE::SPATIUM, PropertyGroup::POSITION, false, "leadingSpace", QT_TRANSLATE_NOOP("engraving/propertyName", "leading space") },
93 : { Pid::END_OF_MEASURE_CHANGE, P_TYPE::BOOL, PropertyGroup::NONE, false, "endOfMeasureChange", QT_TRANSLATE_NOOP("engraving/propertyName", "end of measure change") },
94 : { Pid::MIRROR_HEAD, P_TYPE::DIRECTION_H, PropertyGroup::POSITION, false, "mirror", QT_TRANSLATE_NOOP("engraving/propertyName", "mirror") },
95 : { Pid::HAS_PARENTHESES, P_TYPE::PARENTHESES_MODE, PropertyGroup::NONE, true, "parentheses", QT_TRANSLATE_NOOP("engraving/propertyName", "parentheses") },
96 : { Pid::HIDE_GENERATED_PARENTHESES, P_TYPE::BOOL, PropertyGroup::NONE, false, "hideGeneratedParentheses", QT_TRANSLATE_NOOP("engraving/propertyName", "hide generated parentheses") },
97 : { Pid::DOT_POSITION, P_TYPE::DIRECTION_V, PropertyGroup::POSITION, false, "dotPosition", QT_TRANSLATE_NOOP("engraving/propertyName", "dot position") },
98 : { Pid::COMBINE_VOICE, P_TYPE::AUTO_ON_OFF, PropertyGroup::POSITION, true, "combineVoice", QT_TRANSLATE_NOOP("engraving/propertyName", "combine voice") },
99 : { Pid::TUNING, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "tuning", QT_TRANSLATE_NOOP("engraving/propertyName", "tuning") },
100 : { Pid::PAUSE, P_TYPE::REAL, PropertyGroup::APPEARANCE, true, "pause", QT_TRANSLATE_NOOP("engraving/propertyName", "pause") },
101 :
102 : { Pid::BARLINE_TYPE, P_TYPE::BARLINE_TYPE, PropertyGroup::APPEARANCE, false, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "barline type") },
103 : { Pid::BARLINE_SPAN, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "span", QT_TRANSLATE_NOOP("engraving/propertyName", "span") },
104 : { Pid::BARLINE_SPAN_FROM, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "spanFromOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "span from") },
105 : { Pid::BARLINE_SPAN_TO, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "spanToOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "span to") },
106 : { Pid::BARLINE_SHOW_TIPS, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "showTips", QT_TRANSLATE_NOOP("engraving/propertyName", "show tips") },
107 :
108 : { Pid::OFFSET, P_TYPE::POINT, PropertyGroup::POSITION, false, "offset", QT_TRANSLATE_NOOP("engraving/propertyName", "offset") },
109 : { Pid::FRET, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "fret", QT_TRANSLATE_NOOP("engraving/propertyName", "fret") },
110 : { Pid::STRING, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "string", QT_TRANSLATE_NOOP("engraving/propertyName", "string") },
111 : { Pid::GHOST, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "ghost", QT_TRANSLATE_NOOP("engraving/propertyName", "ghost") },
112 : { Pid::DEAD, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "dead", QT_TRANSLATE_NOOP("engraving/propertyName", "dead") },
113 : { Pid::PLAY, P_TYPE::BOOL, PropertyGroup::NONE, false, "play", QT_TRANSLATE_NOOP("engraving/propertyName", "played") },
114 : { Pid::TIMESIG_NOMINAL, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, false, "timesigNominal", QT_TRANSLATE_NOOP("engraving/propertyName", "nominal time signature") },
115 : { Pid::TIMESIG_ACTUAL, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, true, "timesigActual", QT_TRANSLATE_NOOP("engraving/propertyName", "actual time signature") },
116 : { Pid::NUMBER_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "numberType", QT_TRANSLATE_NOOP("engraving/propertyName", "number type") },
117 : { Pid::BRACKET_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "bracketType", QT_TRANSLATE_NOOP("engraving/propertyName", "bracket type") },
118 : { Pid::NORMAL_NOTES, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "normalNotes", QT_TRANSLATE_NOOP("engraving/propertyName", "normal notes") },
119 : { Pid::ACTUAL_NOTES, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "actualNotes", QT_TRANSLATE_NOOP("engraving/propertyName", "actual notes") },
120 : { Pid::P1, P_TYPE::POINT, PropertyGroup::POSITION, false, "p1", QT_TRANSLATE_NOOP("engraving/propertyName", "bracket start offset") },
121 : { Pid::P2, P_TYPE::POINT, PropertyGroup::POSITION, false, "p2", QT_TRANSLATE_NOOP("engraving/propertyName", "bracket end offset") },
122 : { Pid::GROW_LEFT, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "growLeft", QT_TRANSLATE_NOOP("engraving/propertyName", "grow left") },
123 : { Pid::GROW_RIGHT, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "growRight", QT_TRANSLATE_NOOP("engraving/propertyName", "grow right") },
124 :
125 : { Pid::BOX_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "height", QT_TRANSLATE_NOOP("engraving/propertyName", "height") },
126 : { Pid::BOX_WIDTH, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "width", QT_TRANSLATE_NOOP("engraving/propertyName", "width") },
127 : { Pid::BOX_AUTOSIZE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "boxAutoSize", QT_TRANSLATE_NOOP("engraving/propertyName", "autosize frame") },
128 : { Pid::TOP_GAP, P_TYPE::SPATIUM, PropertyGroup::POSITION, false, "topGap", QT_TRANSLATE_NOOP("engraving/propertyName", "top gap") },
129 : { Pid::BOTTOM_GAP, P_TYPE::SPATIUM, PropertyGroup::POSITION, false, "bottomGap", QT_TRANSLATE_NOOP("engraving/propertyName", "bottom gap") },
130 : { Pid::LEFT_MARGIN, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "leftMargin", QT_TRANSLATE_NOOP("engraving/propertyName", "left padding") },
131 : { Pid::RIGHT_MARGIN, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "rightMargin", QT_TRANSLATE_NOOP("engraving/propertyName", "right padding") },
132 : { Pid::TOP_MARGIN, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "topMargin", QT_TRANSLATE_NOOP("engraving/propertyName", "top padding") },
133 : { Pid::BOTTOM_MARGIN, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "bottomMargin", QT_TRANSLATE_NOOP("engraving/propertyName", "bottom padding") },
134 : { Pid::PADDING_TO_NOTATION_ABOVE, P_TYPE::SPATIUM, PropertyGroup::POSITION, false, "paddingToNotationAbove", QT_TRANSLATE_NOOP("engraving/propertyName", "padding to notation above") },
135 : { Pid::PADDING_TO_NOTATION_BELOW, P_TYPE::SPATIUM, PropertyGroup::POSITION, false, "paddingToNotationBelow", QT_TRANSLATE_NOOP("engraving/propertyName", "padding to notation below") },
136 :
137 : { Pid::LAYOUT_BREAK, P_TYPE::LAYOUTBREAK_TYPE, PropertyGroup::APPEARANCE, false, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "layout break type") },
138 : { Pid::AUTOSCALE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "autoScale", QT_TRANSLATE_NOOP("engraving/propertyName", "autoscale") },
139 : { Pid::SIZE, P_TYPE::SIZE, PropertyGroup::APPEARANCE, false, "size", QT_TRANSLATE_NOOP("engraving/propertyName", "size") },
140 :
141 : { Pid::IMAGE_HEIGHT, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "imageHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "image height") },
142 : { Pid::IMAGE_WIDTH, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "imageWidth", QT_TRANSLATE_NOOP("engraving/propertyName", "image width") },
143 : { Pid::IMAGE_FRAMED, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "imageFramed", QT_TRANSLATE_NOOP("engraving/propertyName", "image framed") },
144 :
145 : { Pid::FRET_FRAME_TEXT_SCALE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "fretFrameTextScale", QT_TRANSLATE_NOOP("engraving/propertyName", "text scale") },
146 : { Pid::FRET_FRAME_DIAGRAM_SCALE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "fretFrameDiagramScale", QT_TRANSLATE_NOOP("engraving/propertyName", "diagram scale") },
147 : { Pid::FRET_FRAME_COLUMN_GAP, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "fretFrameColumnGap", QT_TRANSLATE_NOOP("engraving/propertyName", "column gap") },
148 : { Pid::FRET_FRAME_ROW_GAP, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "fretFrameRowGap", QT_TRANSLATE_NOOP("engraving/propertyName", "row gap") },
149 : { Pid::FRET_FRAME_CHORDS_PER_ROW, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "fretFrameChordsPerRow", QT_TRANSLATE_NOOP("engraving/propertyName", "chord symbols per row") },
150 : { Pid::FRET_FRAME_H_ALIGN, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "fretFrameHorizontalAlign", QT_TRANSLATE_NOOP("engraving/propertyName", "horizontal alignment") },
151 : { Pid::FRET_FRAME_DIAGRAMS_ORDER, P_TYPE::STRING, PropertyGroup::NONE, false, "fretFrameDiagramsOrder", QT_TRANSLATE_NOOP("engraving/propertyName", "diagrams order") },
152 :
153 : { Pid::SCALE, P_TYPE::SCALE, PropertyGroup::APPEARANCE, false, "scale", QT_TRANSLATE_NOOP("engraving/propertyName", "scale") },
154 : { Pid::LOCK_ASPECT_RATIO, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "lockAspectRatio", QT_TRANSLATE_NOOP("engraving/propertyName", "aspect ratio locked") },
155 : { Pid::SIZE_IS_SPATIUM, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "sizeIsSpatium", QT_TRANSLATE_NOOP("engraving/propertyName", "size is spatium") },
156 : { Pid::TEXT, P_TYPE::STRING, PropertyGroup::TEXT, false, "text", QT_TRANSLATE_NOOP("engraving/propertyName", "text") },
157 : { Pid::HTML_TEXT, P_TYPE::STRING, PropertyGroup::TEXT, false, "", nullptr },
158 : { Pid::USER_MODIFIED, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", nullptr },
159 : { Pid::BEAM_POS, P_TYPE::PAIR_REAL, PropertyGroup::POSITION, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "beam position") },
160 : { Pid::BEAM_MODE, P_TYPE::BEAM_MODE, PropertyGroup::APPEARANCE, true, "BeamMode", QT_TRANSLATE_NOOP("engraving/propertyName", "beam mode") },
161 : { Pid::BEAM_NO_SLOPE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "noSlope", QT_TRANSLATE_NOOP("engraving/propertyName", "without slope") },
162 : { Pid::BEAM_CROSS_STAFF_MOVE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "crossStaffMove", QT_TRANSLATE_NOOP("engraving/propertyName", "beam staff move") },
163 : { Pid::USER_LEN, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "userLen", QT_TRANSLATE_NOOP("engraving/propertyName", "length") },
164 : { Pid::SHOW_STEM_SLASH, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "showStemSlash", QT_TRANSLATE_NOOP("engraving/propertyName", "show stem slash") },
165 :
166 : { Pid::SPACE, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "space", QT_TRANSLATE_NOOP("engraving/propertyName", "space") },
167 : { Pid::TEMPO, P_TYPE::TEMPO, PropertyGroup::APPEARANCE, true, "tempo", QT_TRANSLATE_NOOP("engraving/propertyName", "tempo") },
168 : { Pid::TEMPO_FOLLOW_TEXT, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "followText", QT_TRANSLATE_NOOP("engraving/propertyName", "following text") },
169 : { Pid::TEMPO_ALIGN_RIGHT_OF_REHEARSAL_MARK, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "tempoAlignRightOfRehearsalMark", QT_TRANSLATE_NOOP("engraving/propertyName", "tempo align right of rehearsal mark") },
170 :
171 : { Pid::ACCIDENTAL_BRACKET, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "bracket", QT_TRANSLATE_NOOP("engraving/propertyName", "bracket") },
172 : { Pid::ACCIDENTAL_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "accidental type") },
173 : { Pid::ACCIDENTAL_STACKING_ORDER_OFFSET, P_TYPE::INT, PropertyGroup::NONE, true, "stackingOrderOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "stacking order offset") },
174 : { Pid::NUMERATOR_STRING, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "textN", QT_TRANSLATE_NOOP("engraving/propertyName", "numerator string") },
175 : { Pid::DENOMINATOR_STRING, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "textD", QT_TRANSLATE_NOOP("engraving/propertyName", "denominator string") },
176 : { Pid::FBPREFIX, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "prefix", QT_TRANSLATE_NOOP("engraving/propertyName", "prefix") },
177 : { Pid::FBDIGIT, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "digit", QT_TRANSLATE_NOOP("engraving/propertyName", "digit") },
178 : { Pid::FBSUFFIX, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "suffix", QT_TRANSLATE_NOOP("engraving/propertyName", "suffix") },
179 : { Pid::FBCONTINUATIONLINE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "continuationLine", QT_TRANSLATE_NOOP("engraving/propertyName", "continuation line") },
180 :
181 : { Pid::FBPARENTHESIS1, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "", nullptr },
182 : { Pid::FBPARENTHESIS2, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "", nullptr },
183 : { Pid::FBPARENTHESIS3, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "", nullptr },
184 : { Pid::FBPARENTHESIS4, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "", nullptr },
185 : { Pid::FBPARENTHESIS5, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "", nullptr },
186 :
187 : { Pid::OTTAVA_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "ottava type") },
188 : { Pid::NUMBERS_ONLY, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "numbersOnly", QT_TRANSLATE_NOOP("engraving/propertyName", "numbers only") },
189 : { Pid::TRILL_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "trill type") },
190 : { Pid::VIBRATO_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "vibrato type") },
191 : { Pid::HAIRPIN_CIRCLEDTIP, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "hairpinCircledTip", QT_TRANSLATE_NOOP("engraving/propertyName", "hairpin with circled tip") },
192 :
193 : { Pid::HAIRPIN_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "hairpin type") },
194 : { Pid::HAIRPIN_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::POSITION, false, "hairpinHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "hairpin height") },
195 : { Pid::HAIRPIN_CONT_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::POSITION, false, "hairpinContHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "hairpin cont height") },
196 : { Pid::VELO_CHANGE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "veloChange", QT_TRANSLATE_NOOP("engraving/propertyName", "velocity change") },
197 : { Pid::VELO_CHANGE_METHOD, P_TYPE::CHANGE_METHOD, PropertyGroup::APPEARANCE, true, "veloChangeMethod", QT_TRANSLATE_NOOP("engraving/propertyName", "velocity change method") }, // left as a compatibility property - we need to be able to read it correctly
198 : { Pid::VELO_CHANGE_SPEED, P_TYPE::DYNAMIC_SPEED, PropertyGroup::APPEARANCE, true, "veloChangeSpeed", QT_TRANSLATE_NOOP("engraving/propertyName", "velocity change speed") },
199 : { Pid::DYNAMIC_TYPE, P_TYPE::DYNAMIC_TYPE, PropertyGroup::APPEARANCE, true, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "dynamic type") },
200 :
201 : { Pid::SINGLE_NOTE_DYNAMICS, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "singleNoteDynamics", QT_TRANSLATE_NOOP("engraving/propertyName", "single note dynamics") },
202 : { Pid::CHANGE_METHOD, P_TYPE::CHANGE_METHOD, PropertyGroup::APPEARANCE, true, "changeMethod", QT_TRANSLATE_NOOP("engraving/propertyName", "change method") }, // the new, more general version of VELO_CHANGE_METHOD
203 : { Pid::PLACEMENT, P_TYPE::PLACEMENT_V, PropertyGroup::POSITION, false, "placement", QT_TRANSLATE_NOOP("engraving/propertyName", "placement") },
204 : { Pid::HPLACEMENT, P_TYPE::PLACEMENT_H, PropertyGroup::POSITION, false, "hplacement", QT_TRANSLATE_NOOP("engraving/propertyName", "horizontal placement") },
205 : { Pid::MMREST_RANGE_BRACKET_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "mmrestRangeBracketType", QT_TRANSLATE_NOOP("engraving/propertyName", "multimeasure rest range bracket type") },
206 : { Pid::VELOCITY, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "velocity", QT_TRANSLATE_NOOP("engraving/propertyName", "velocity") },
207 : { Pid::JUMP_TO, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "jumpTo", QT_TRANSLATE_NOOP("engraving/propertyName", "jump to") },
208 : { Pid::PLAY_UNTIL, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "playUntil", QT_TRANSLATE_NOOP("engraving/propertyName", "play until") },
209 : { Pid::CONTINUE_AT, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "continueAt", QT_TRANSLATE_NOOP("engraving/propertyName", "continue at") },
210 : { Pid::LABEL, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "label", QT_TRANSLATE_NOOP("engraving/propertyName", "label") },
211 : { Pid::MARKER_TYPE, P_TYPE::MARKER_TYPE, PropertyGroup::APPEARANCE, true, "markerType", QT_TRANSLATE_NOOP("engraving/propertyName", "marker type") },
212 : { Pid::MUSIC_SYMBOL_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, true, "musicSymbolSize", QT_TRANSLATE_NOOP("engraving/propertyName", "music symbol size") },
213 : { Pid::MARKER_CENTER_ON_SYMBOL, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "markerCenterOnSymbol", QT_TRANSLATE_NOOP("engraving/propertyName", "marker center on symbol") },
214 : { Pid::ARP_USER_LEN1, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "arpUserLen1", QT_TRANSLATE_NOOP("engraving/propertyName", "length 1") },
215 : { Pid::ARP_USER_LEN2, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "arpUserLen2", QT_TRANSLATE_NOOP("engraving/propertyName", "length 2") },
216 : { Pid::REPEAT_END, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "repeatEnd", QT_TRANSLATE_NOOP("engraving/propertyName", "repeat end") },
217 : { Pid::REPEAT_START, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "repeatStart", QT_TRANSLATE_NOOP("engraving/propertyName", "repeat start") },
218 : { Pid::REPEAT_JUMP, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "repeatJump", QT_TRANSLATE_NOOP("engraving/propertyName", "repeat jump") },
219 : { Pid::MEASURE_NUMBER_MODE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "measureNumberMode", QT_TRANSLATE_NOOP("engraving/propertyName", "measure number mode") },
220 :
221 : { Pid::GLISS_TYPE, P_TYPE::GLISS_TYPE, PropertyGroup::APPEARANCE, false, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "glissando type") },
222 : { Pid::GLISS_TEXT, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "text", QT_TRANSLATE_NOOP("engraving/propertyName", "text") },
223 : { Pid::GLISS_SHOW_TEXT, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "glissandoShowText", QT_TRANSLATE_NOOP("engraving/propertyName", "showing text") },
224 : { Pid::GLISS_STYLE, P_TYPE::GLISS_STYLE, PropertyGroup::APPEARANCE, true, "glissandoStyle", QT_TRANSLATE_NOOP("engraving/propertyName", "glissando style") },
225 : { Pid::GLISS_SHIFT, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "glissandoShift", QT_TRANSLATE_NOOP("engraving/propertyName", "glissando shift") },
226 : { Pid::GLISS_EASEIN, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "easeInSpin", QT_TRANSLATE_NOOP("engraving/propertyName", "ease in") },
227 : { Pid::GLISS_EASEOUT, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "easeOutSpin", QT_TRANSLATE_NOOP("engraving/propertyName", "ease out") },
228 : { Pid::DIAGONAL, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "diagonal", QT_TRANSLATE_NOOP("engraving/propertyName", "diagonal") },
229 : { Pid::GROUP_NODES, P_TYPE::GROUPS, PropertyGroup::NONE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "groups") },
230 : { Pid::LINE_STYLE, P_TYPE::LINE_TYPE, PropertyGroup::APPEARANCE, true, "lineStyle", QT_TRANSLATE_NOOP("engraving/propertyName", "line style") },
231 : { Pid::LINE_WIDTH, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "lineWidth", QT_TRANSLATE_NOOP("engraving/propertyName", "line width") },
232 : { Pid::TIME_STRETCH, P_TYPE::REAL, PropertyGroup::APPEARANCE, true, "timeStretch", QT_TRANSLATE_NOOP("engraving/propertyName", "time stretch") },
233 : { Pid::ORNAMENT_STYLE, P_TYPE::ORNAMENT_STYLE, PropertyGroup::APPEARANCE, true, "ornamentStyle", QT_TRANSLATE_NOOP("engraving/propertyName", "ornament style") },
234 : { Pid::INTERVAL_ABOVE, P_TYPE::ORNAMENT_INTERVAL, PropertyGroup::APPEARANCE, true, "intervalAbove", QT_TRANSLATE_NOOP("engraving/propertyName", "interval above") },
235 : { Pid::INTERVAL_BELOW, P_TYPE::ORNAMENT_INTERVAL, PropertyGroup::APPEARANCE, true, "intervalBelow", QT_TRANSLATE_NOOP("engraving/propertyName", "interval below") },
236 : { Pid::ORNAMENT_SHOW_ACCIDENTAL, P_TYPE::ORNAMENT_SHOW_ACCIDENTAL, PropertyGroup::APPEARANCE, true, "ornamentShowAccidental", QT_TRANSLATE_NOOP("engraving/propertyName", "ornament show accidental") },
237 : { Pid::ORNAMENT_SHOW_CUE_NOTE, P_TYPE::AUTO_ON_OFF, PropertyGroup::APPEARANCE, true, "ornamentShowCueNote", QT_TRANSLATE_NOOP("engraving/propertyName", "ornament show cue note") },
238 : { Pid::START_ON_UPPER_NOTE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "startOnUpperNote", QT_TRANSLATE_NOOP("engraving/propertyName", "start on upper note") },
239 :
240 : { Pid::TIMESIG, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, false, "timesig", QT_TRANSLATE_NOOP("engraving/propertyName", "time signature") },
241 : { Pid::TIMESIG_STRETCH, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "time signature stretch") },
242 : { Pid::TIMESIG_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "time signature type") },
243 : { Pid::SPANNER_TICK, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, true, "tick", QT_TRANSLATE_NOOP("engraving/propertyName", "tick") },
244 : { Pid::SPANNER_TICKS, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, true, "ticks", QT_TRANSLATE_NOOP("engraving/propertyName", "ticks") },
245 : { Pid::SPANNER_TRACK2, P_TYPE::SIZE_T, PropertyGroup::NONE, false, "track2", QT_TRANSLATE_NOOP("engraving/propertyName", "end track") },
246 : { Pid::OFFSET2, P_TYPE::POINT, PropertyGroup::POSITION, false, "userOff2", QT_TRANSLATE_NOOP("engraving/propertyName", "end offset") },
247 : { Pid::BREAK_MMR, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "breakMultiMeasureRest", QT_TRANSLATE_NOOP("engraving/propertyName", "breaking multimeasure rest") },
248 : { Pid::MMREST_NUMBER_POS, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "mmRestNumberPos", QT_TRANSLATE_NOOP("engraving/propertyName", "vertical position of multimeasure rest number") }, // Deprecated
249 : { Pid::MMREST_NUMBER_OFFSET, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "mmRestNumberOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "vertical offset of multimeasure rest number") },
250 : { Pid::MMREST_NUMBER_VISIBLE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "mmRestNumberVisible", QT_TRANSLATE_NOOP("engraving/propertyName", "visibility of multimeasure rest number") },
251 :
252 : { Pid::MEASURE_REPEAT_NUMBER_POS, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "measureRepeatNumberPos", QT_TRANSLATE_NOOP("engraving/propertyName", "vertical position of measure repeat number") }, // Deprecated
253 : { Pid::MEASURE_REPEAT_NUMBER_OFFSET, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "measureRepeatNumberOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "vertical offset of measure repeat number") },
254 : { Pid::REPEAT_COUNT, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "repeatCount", QT_TRANSLATE_NOOP("engraving/propertyName", "repeat count") },
255 :
256 : { Pid::USER_STRETCH, P_TYPE::REAL, PropertyGroup::NONE, false, "stretch", QT_TRANSLATE_NOOP("engraving/propertyName", "stretch") },
257 : { Pid::MEASURE_NUMBER_OFFSET, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "noOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "measure number offset") },
258 : { Pid::EXCLUDE_FROM_NUMBERING, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "irregular", QT_TRANSLATE_NOOP("engraving/propertyName", "exclude from numbering") },
259 : { Pid::BEZIER_OFFSET1, P_TYPE::POINT, PropertyGroup::POSITION, false, "o1", QT_TRANSLATE_NOOP("engraving/propertyName", "start offset") },
260 : { Pid::BEZIER_OFFSET2, P_TYPE::POINT, PropertyGroup::POSITION, false, "o2", QT_TRANSLATE_NOOP("engraving/propertyName", "first control point offset") },
261 : { Pid::BEZIER_OFFSET3, P_TYPE::POINT, PropertyGroup::POSITION, false, "o3", QT_TRANSLATE_NOOP("engraving/propertyName", "second control point offset") },
262 : { Pid::BEZIER_OFFSET4, P_TYPE::POINT, PropertyGroup::POSITION, false, "o4", QT_TRANSLATE_NOOP("engraving/propertyName", "end offset") },
263 : { Pid::STAFF_MOVE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "staffMove", QT_TRANSLATE_NOOP("engraving/propertyName", "staff move") },
264 : { Pid::VERSE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "no", QT_TRANSLATE_NOOP("engraving/propertyName", "verse") },
265 :
266 : { Pid::SYLLABIC, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "syllabic", QT_TRANSLATE_NOOP("engraving/propertyName", "syllabic") },
267 : { Pid::LYRIC_TICKS, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, true, "ticks_f", QT_TRANSLATE_NOOP("engraving/propertyName", "ticks") },
268 : { Pid::VOLTA_ENDING, P_TYPE::INT_VEC, PropertyGroup::APPEARANCE, true, "endings", QT_TRANSLATE_NOOP("engraving/propertyName", "endings") },
269 : { Pid::LINE_VISIBLE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "lineVisible", QT_TRANSLATE_NOOP("engraving/propertyName", "visible line") },
270 : { Pid::MAG, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "mag", QT_TRANSLATE_NOOP("engraving/propertyName", "magnification") },
271 : { Pid::USE_DRUMSET, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "useDrumset", QT_TRANSLATE_NOOP("engraving/propertyName", "using drumset") },
272 : { Pid::DURATION, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, true, "", QT_TRANSLATE_NOOP("engraving/propertyName", "duration") },
273 : { Pid::DURATION_TYPE_WITH_DOTS, P_TYPE::DURATION_TYPE_WITH_DOTS, PropertyGroup::APPEARANCE, true, "", QT_TRANSLATE_NOOP("engraving/propertyName", "duration type") },
274 : { Pid::ACCIDENTAL_ROLE, P_TYPE::ACCIDENTAL_ROLE, PropertyGroup::APPEARANCE, false, "role", QT_TRANSLATE_NOOP("engraving/propertyName", "role") },
275 : { Pid::TRACK, P_TYPE::SIZE_T, PropertyGroup::NONE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "track") },
276 :
277 : { Pid::FRET_STRINGS, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "strings", QT_TRANSLATE_NOOP("engraving/propertyName", "strings") },
278 : { Pid::FRET_FRETS, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "frets", QT_TRANSLATE_NOOP("engraving/propertyName", "frets") },
279 : { Pid::FRET_NUT, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "showNut", QT_TRANSLATE_NOOP("engraving/propertyName", "show nut") },
280 : { Pid::FRET_OFFSET, P_TYPE::INT, PropertyGroup::POSITION, true, "fretOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "fret offset") },
281 : { Pid::FRET_NUM_POS, P_TYPE::INT, PropertyGroup::POSITION, true, "fretNumPos", QT_TRANSLATE_NOOP("engraving/propertyName", "fret number position") },
282 : { Pid::ORIENTATION, P_TYPE::ORIENTATION, PropertyGroup::APPEARANCE, true, "orientation", QT_TRANSLATE_NOOP("engraving/propertyName", "orientation") },
283 : { Pid::FRET_SHOW_FINGERINGS, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "fretShowFingering", QT_TRANSLATE_NOOP("engraving/propertyName", "fretboard diagram fingering visible") },
284 : { Pid::FRET_FINGERING, P_TYPE::INT_VEC, PropertyGroup::APPEARANCE, true, "fretFingering", QT_TRANSLATE_NOOP("engraving/propertyName", "fretboard diagram fingering") },
285 :
286 : { Pid::HARMONY_VOICE_LITERAL, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "harmonyVoiceLiteral", QT_TRANSLATE_NOOP("engraving/propertyName", "chord symbol interpretation") },
287 : { Pid::HARMONY_VOICING, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "harmonyVoicing", QT_TRANSLATE_NOOP("engraving/propertyName", "chord symbol voicing") },
288 : { Pid::HARMONY_DURATION, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "harmonyDuration", QT_TRANSLATE_NOOP("engraving/propertyName", "chord symbol duration") },
289 : { Pid::HARMONY_BASS_SCALE, P_TYPE::REAL, PropertyGroup::APPEARANCE, true, "harmonyBassScale", QT_TRANSLATE_NOOP("engraving/propertyName", "chord symbol bass scale") },
290 : { Pid::HARMONY_DO_NOT_STACK_MODIFIERS, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "harmonyDoNotStackModifiers", QT_TRANSLATE_NOOP("engraving/propertyName", "chord symbol do not stack modifiers") },
291 :
292 : { Pid::SYSTEM_BRACKET, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "type", QT_TRANSLATE_NOOP("engraving/propertyName", "type") },
293 : { Pid::GAP, P_TYPE::BOOL, PropertyGroup::NONE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "gap") },
294 : { Pid::AUTOPLACE, P_TYPE::BOOL, PropertyGroup::POSITION, false, "autoplace", QT_TRANSLATE_NOOP("engraving/propertyName", "autoplace") },
295 : { Pid::DASH_LINE_LEN, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "dashLineLength", QT_TRANSLATE_NOOP("engraving/propertyName", "dash line length") },
296 : { Pid::DASH_GAP_LEN, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "dashGapLength", QT_TRANSLATE_NOOP("engraving/propertyName", "dash gap length") },
297 : { Pid::TICK, P_TYPE::FRACTION, PropertyGroup::NONE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "tick") },
298 : { Pid::PLAYBACK_VOICE1, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "playbackVoice1", QT_TRANSLATE_NOOP("engraving/propertyName", "playback voice 1") },
299 : { Pid::PLAYBACK_VOICE2, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "playbackVoice2", QT_TRANSLATE_NOOP("engraving/propertyName", "playback voice 2") },
300 : { Pid::PLAYBACK_VOICE3, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "playbackVoice3", QT_TRANSLATE_NOOP("engraving/propertyName", "playback voice 3") },
301 :
302 : { Pid::PLAYBACK_VOICE4, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "playbackVoice4", QT_TRANSLATE_NOOP("engraving/propertyName", "playback voice 4") },
303 : { Pid::SYMBOL, P_TYPE::SYMID, PropertyGroup::APPEARANCE, true, "symbol", QT_TRANSLATE_NOOP("engraving/propertyName", "symbol") },
304 : { Pid::PLAY_REPEATS, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "playRepeats", QT_TRANSLATE_NOOP("engraving/propertyName", "playing repeats") },
305 : { Pid::CREATE_SYSTEM_HEADER, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "createSystemHeader", QT_TRANSLATE_NOOP("engraving/propertyName", "creating system header") },
306 : { Pid::STAFF_LINES, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "lines", QT_TRANSLATE_NOOP("engraving/propertyName", "lines") },
307 : { Pid::LINE_DISTANCE, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, true, "lineDistance", QT_TRANSLATE_NOOP("engraving/propertyName", "line distance") },
308 : { Pid::STEP_OFFSET, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "stepOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "step offset") },
309 : { Pid::STAFF_SHOW_BARLINES, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "showing barlines") },
310 : { Pid::STAFF_SHOW_LEDGERLINES, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "showing ledgerlines") },
311 : { Pid::STAFF_STEMLESS, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "stemless") },
312 : { Pid::STAFF_INVISIBLE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "invisible") },
313 : { Pid::STAFF_COLOR, P_TYPE::COLOR, PropertyGroup::APPEARANCE, false, "color", QT_TRANSLATE_NOOP("engraving/propertyName", "color") },
314 : { Pid::STAFF_LONG_NAME, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "staffLongName", QT_TRANSLATE_NOOP("engraving/propertyName", "staff long name") },
315 : { Pid::STAFF_SHORT_NAME, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "staffShortName", QT_TRANSLATE_NOOP("engraving/propertyName", "staff short name") },
316 :
317 : { Pid::HEAD_SCHEME, P_TYPE::NOTEHEAD_SCHEME, PropertyGroup::APPEARANCE, false, "headScheme", QT_TRANSLATE_NOOP("engraving/propertyName", "notehead scheme") },
318 : { Pid::STAFF_GEN_CLEF, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "generating clefs") },
319 : { Pid::STAFF_GEN_TIMESIG, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "generating time signature") },
320 : { Pid::STAFF_GEN_KEYSIG, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "generating key signature") },
321 : { Pid::STAFF_INSTRUMENT_LABEL_VISIBILITY, P_TYPE::INSTRUMENT_LABEL_VISIBILITY, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "instrument label visibility") },
322 : { Pid::STAFF_YOFFSET, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "y-offset") },
323 : { Pid::STAFF_USERDIST, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "distOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "distance offset") },
324 : { Pid::STAFF_BARLINE_SPAN, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "barLineSpan", QT_TRANSLATE_NOOP("engraving/propertyName", "barline span") },
325 : { Pid::STAFF_BARLINE_SPAN_FROM, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "barLineSpanFrom", QT_TRANSLATE_NOOP("engraving/propertyName", "barline span from") },
326 : { Pid::STAFF_BARLINE_SPAN_TO, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "barLineSpanTo", QT_TRANSLATE_NOOP("engraving/propertyName", "barline span to") },
327 : { Pid::BRACKET_SPAN, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "bracketSpan", QT_TRANSLATE_NOOP("engraving/propertyName", "bracket span") },
328 :
329 : { Pid::BRACKET_COLUMN, P_TYPE::SIZE_T, PropertyGroup::APPEARANCE, false, "level", QT_TRANSLATE_NOOP("engraving/propertyName", "level") },
330 : { Pid::INAME_LAYOUT_POSITION, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "layoutPosition", QT_TRANSLATE_NOOP("engraving/propertyName", "layout position") },
331 :
332 : { Pid::GROUP_BRACKET_SHOW_TEXT, P_TYPE::BOOL, PropertyGroup::NONE, false, "groupBracketShowText", QT_TRANSLATE_NOOP("engraving/propertyName", "group bracket show text") },
333 : { Pid::GROUP_BRACKET_SHOW_BRACKET, P_TYPE::BOOL, PropertyGroup::NONE, false, "groupBracketShowBracket", QT_TRANSLATE_NOOP("engraving/propertyName", "group bracket show bracket") },
334 :
335 : { Pid::TEXT_STYLE, P_TYPE::TEXT_STYLE, PropertyGroup::TEXT, false, "style", QT_TRANSLATE_NOOP("engraving/propertyName", "style") },
336 : { Pid::FONT_FACE, P_TYPE::STRING, PropertyGroup::TEXT, false, "family", QT_TRANSLATE_NOOP("engraving/propertyName", "family") },
337 : { Pid::FONT_SIZE, P_TYPE::REAL, PropertyGroup::TEXT, false, "size", QT_TRANSLATE_NOOP("engraving/propertyName", "size") },
338 : { Pid::FONT_STYLE, P_TYPE::INT, PropertyGroup::TEXT, false, "fontStyle", QT_TRANSLATE_NOOP("engraving/propertyName", "font style") },
339 : { Pid::TEXT_LINE_SPACING, P_TYPE::REAL, PropertyGroup::TEXT, false, "textLineSpacing", QT_TRANSLATE_NOOP("engraving/propertyName", "user line distancing") },
340 :
341 : { Pid::FRAME_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "frameType", QT_TRANSLATE_NOOP("engraving/propertyName", "frame type") },
342 : { Pid::FRAME_WIDTH, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "frameWidth", QT_TRANSLATE_NOOP("engraving/propertyName", "frame width") },
343 : { Pid::FRAME_PADDING, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "framePadding", QT_TRANSLATE_NOOP("engraving/propertyName", "frame padding") },
344 : { Pid::FRAME_ROUND, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "frameRound", QT_TRANSLATE_NOOP("engraving/propertyName", "frame round") },
345 : { Pid::FRAME_FG_COLOR, P_TYPE::COLOR, PropertyGroup::APPEARANCE, false, "frameFgColor", QT_TRANSLATE_NOOP("engraving/propertyName", "frame foreground color") },
346 : { Pid::FRAME_BG_COLOR, P_TYPE::COLOR, PropertyGroup::APPEARANCE, false, "frameBgColor", QT_TRANSLATE_NOOP("engraving/propertyName", "frame background color") },
347 : { Pid::SIZE_SPATIUM_DEPENDENT, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "sizeIsSpatiumDependent", QT_TRANSLATE_NOOP("engraving/propertyName", "spatium dependent size") },
348 : { Pid::TEXT_SIZE_SPATIUM_DEPENDENT, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "textSizeIsSpatiumDependent", QT_TRANSLATE_NOOP("engraving/propertyName", "spatium dependent text size") },
349 : { Pid::MUSICAL_SYMBOLS_SCALE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "musicalSymbolsScale", QT_TRANSLATE_NOOP("engraving/propertyName", "musical symbols scale") },
350 : { Pid::ALIGN, P_TYPE::ALIGN, PropertyGroup::POSITION, false, "align", QT_TRANSLATE_NOOP("engraving/propertyName", "align") },
351 : { Pid::TEXT_SCRIPT_ALIGN, P_TYPE::INT, PropertyGroup::POSITION, false, "align", QT_TRANSLATE_NOOP("engraving/propertyName", "text script align") },
352 : { Pid::SYSTEM_FLAG, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "systemFlag", QT_TRANSLATE_NOOP("engraving/propertyName", "system flag") },
353 :
354 : { Pid::BEGIN_TEXT, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "beginText", QT_TRANSLATE_NOOP("engraving/propertyName", "begin text") },
355 : { Pid::BEGIN_TEXT_ALIGN, P_TYPE::ALIGN, PropertyGroup::APPEARANCE, false, "beginTextAlign", QT_TRANSLATE_NOOP("engraving/propertyName", "begin text align") },
356 : { Pid::BEGIN_TEXT_POSITION, P_TYPE::ALIGN_H, PropertyGroup::APPEARANCE, false, "beginTextPosition", QT_TRANSLATE_NOOP("engraving/propertyName", "begin text position") },
357 : { Pid::BEGIN_TEXT_PLACE, P_TYPE::TEXT_PLACE, PropertyGroup::APPEARANCE, false, "beginTextPlace", QT_TRANSLATE_NOOP("engraving/propertyName", "begin text place") },
358 : { Pid::BEGIN_HOOK_TYPE, P_TYPE::HOOK_TYPE, PropertyGroup::APPEARANCE, true, "beginHookType", QT_TRANSLATE_NOOP("engraving/propertyName", "begin hook type") },
359 : { Pid::BEGIN_HOOK_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "beginHookHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "begin hook height") },
360 : { Pid::BEGIN_LINE_ARROW_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "beginLineArrowHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "begin line arrow height") },
361 : { Pid::BEGIN_LINE_ARROW_WIDTH, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "beginLineArrowWidth", QT_TRANSLATE_NOOP("engraving/propertyName", "begin line arrow width") },
362 : { Pid::BEGIN_FILLED_ARROW_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "beginFilledArrowHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "begin filled arrow height") },
363 : { Pid::BEGIN_FILLED_ARROW_WIDTH, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "beginFilledArrowWidth", QT_TRANSLATE_NOOP("engraving/propertyName", "begin filled arrow width") },
364 : { Pid::BEGIN_FONT_FACE, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "beginFontFace", QT_TRANSLATE_NOOP("engraving/propertyName", "begin font face") },
365 : { Pid::BEGIN_FONT_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "beginFontSize", QT_TRANSLATE_NOOP("engraving/propertyName", "begin font size") },
366 : { Pid::BEGIN_FONT_STYLE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "beginFontStyle", QT_TRANSLATE_NOOP("engraving/propertyName", "begin font style") },
367 : { Pid::BEGIN_TEXT_MUSICAL_SYMBOLS_SCALE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "beginTextMusicalSymbolsScale", QT_TRANSLATE_NOOP("engraving/propertyName", "begin text musical symbols scale") },
368 : { Pid::CONTINUE_TEXT_MUSICAL_SYMBOLS_SCALE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "continueTextMusicalSymbolsScale", QT_TRANSLATE_NOOP("engraving/propertyName", "continue text musical symbols scale") },
369 : { Pid::END_TEXT_MUSICAL_SYMBOLS_SCALE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "endTextMusicalSymbolsScale", QT_TRANSLATE_NOOP("engraving/propertyName", "end text musical symbols scale") },
370 : { Pid::BEGIN_TEXT_MUSIC_SYMBOLS_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "beginTextMusicSymbolsSize", QT_TRANSLATE_NOOP("engraving/propertyName", "begin text music symbols size") },
371 : { Pid::CONTINUE_TEXT_MUSIC_SYMBOLS_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "continueTextMusicSymbolsSize", QT_TRANSLATE_NOOP("engraving/propertyName", "continue text music symbols size") },
372 : { Pid::END_TEXT_MUSIC_SYMBOLS_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "endTextMusicSymbolsSize", QT_TRANSLATE_NOOP("engraving/propertyName", "end text music symbols size") },
373 : { Pid::BEGIN_TEXT_OFFSET, P_TYPE::POINT, PropertyGroup::POSITION, false, "beginTextOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "begin text offset") },
374 : { Pid::GAP_BETWEEN_TEXT_AND_LINE, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "gapBetweenTextAndLine", QT_TRANSLATE_NOOP("engraving/propertyName", "gap between text and line") },
375 :
376 : { Pid::CONTINUE_TEXT, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "continueText", QT_TRANSLATE_NOOP("engraving/propertyName", "continue text") },
377 : { Pid::CONTINUE_TEXT_ALIGN, P_TYPE::ALIGN, PropertyGroup::APPEARANCE, false, "continueTextAlign", QT_TRANSLATE_NOOP("engraving/propertyName", "continue text align") },
378 : { Pid::CONTINUE_TEXT_POSITION, P_TYPE::ALIGN_H, PropertyGroup::APPEARANCE, false, "continueTextPosition", QT_TRANSLATE_NOOP("engraving/propertyName", "continue text position") },
379 : { Pid::CONTINUE_TEXT_PLACE, P_TYPE::TEXT_PLACE, PropertyGroup::APPEARANCE, false, "continueTextPlace", QT_TRANSLATE_NOOP("engraving/propertyName", "continue text place") },
380 : { Pid::CONTINUE_FONT_FACE, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "continueFontFace", QT_TRANSLATE_NOOP("engraving/propertyName", "continue font face") },
381 : { Pid::CONTINUE_FONT_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "continueFontSize", QT_TRANSLATE_NOOP("engraving/propertyName", "continue font size") },
382 : { Pid::CONTINUE_FONT_STYLE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "continueFontStyle", QT_TRANSLATE_NOOP("engraving/propertyName", "continue font style") },
383 : { Pid::CONTINUE_TEXT_OFFSET, P_TYPE::POINT, PropertyGroup::POSITION, false, "continueTextOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "continue text offset") },
384 :
385 : { Pid::END_TEXT, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "endText", QT_TRANSLATE_NOOP("engraving/propertyName", "end text") },
386 : { Pid::END_TEXT_ALIGN, P_TYPE::ALIGN, PropertyGroup::APPEARANCE, false, "endTextAlign", QT_TRANSLATE_NOOP("engraving/propertyName", "end text align") },
387 : { Pid::END_TEXT_POSITION, P_TYPE::ALIGN_H, PropertyGroup::APPEARANCE, false, "endTextPosition", QT_TRANSLATE_NOOP("engraving/propertyName", "end text position") },
388 : { Pid::END_TEXT_PLACE, P_TYPE::TEXT_PLACE, PropertyGroup::APPEARANCE, false, "endTextPlace", QT_TRANSLATE_NOOP("engraving/propertyName", "end text place") },
389 : { Pid::END_HOOK_TYPE, P_TYPE::HOOK_TYPE, PropertyGroup::APPEARANCE, true, "endHookType", QT_TRANSLATE_NOOP("engraving/propertyName", "end hook type") },
390 : { Pid::END_HOOK_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "endHookHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "end hook height") },
391 : { Pid::END_LINE_ARROW_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "endLineArrowHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "end line arrow height") },
392 : { Pid::END_LINE_ARROW_WIDTH, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "endLineArrowWidth", QT_TRANSLATE_NOOP("engraving/propertyName", "end line arrow width") },
393 : { Pid::END_FILLED_ARROW_HEIGHT, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "endFilledArrowHeight", QT_TRANSLATE_NOOP("engraving/propertyName", "end filled arrow height") },
394 : { Pid::END_FILLED_ARROW_WIDTH, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, false, "endFilledArrowWidth", QT_TRANSLATE_NOOP("engraving/propertyName", "end filled arrow width") },
395 : { Pid::END_FONT_FACE, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "endFontFace", QT_TRANSLATE_NOOP("engraving/propertyName", "end font face") },
396 : { Pid::END_FONT_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "endFontSize", QT_TRANSLATE_NOOP("engraving/propertyName", "end font size") },
397 : { Pid::END_FONT_STYLE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "endFontStyle", QT_TRANSLATE_NOOP("engraving/propertyName", "end font style") },
398 : { Pid::END_TEXT_OFFSET, P_TYPE::POINT, PropertyGroup::POSITION, false, "endTextOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "end text offset") },
399 :
400 : { Pid::NOTELINE_PLACEMENT, P_TYPE::NOTELINE_PLACEMENT_TYPE, PropertyGroup::APPEARANCE, false, "noteLinePlacement", QT_TRANSLATE_NOOP("engraving/propertyName", "note-anchored line placement") },
401 :
402 : { Pid::AVOID_BARLINES, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "avoidBarLines", QT_TRANSLATE_NOOP("engraving/propertyName", "avoid barlines") },
403 : { Pid::DYNAMICS_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "dynamicsSize", QT_TRANSLATE_NOOP("engraving/propertyName", "dynamic size") },
404 : { Pid::CENTER_ON_NOTEHEAD, P_TYPE::BOOL, PropertyGroup::POSITION, false, "centerOnNotehead", QT_TRANSLATE_NOOP("engraving/propertyName", "use text alignment") },
405 : { Pid::ANCHOR_TO_END_OF_PREVIOUS, P_TYPE::BOOL, PropertyGroup::NONE, true, "anchorToEndOfPrevious", QT_TRANSLATE_NOOP("engraving/propertyName", "anchor to end of previous") },
406 :
407 : { Pid::SNAP_TO_DYNAMICS, P_TYPE::BOOL, PropertyGroup::POSITION, false, "snapToDynamics", QT_TRANSLATE_NOOP("engraving/propertyName", "snap expression") }, // for expressions
408 : { Pid::SNAP_BEFORE, P_TYPE::BOOL, PropertyGroup::POSITION, false, "snapBefore", QT_TRANSLATE_NOOP("engraving/propertyName", "snap before") }, // <
409 : { Pid::SNAP_AFTER, P_TYPE::BOOL, PropertyGroup::POSITION, false, "snapAfter", QT_TRANSLATE_NOOP("engraving/propertyName", "snap after") }, // < for hairpins
410 :
411 : { Pid::VOICE_ASSIGNMENT, P_TYPE::VOICE_ASSIGNMENT, PropertyGroup::NONE, true, "voiceAssignment", QT_TRANSLATE_NOOP("engraving/propertyName", "voice assignment") },
412 : { Pid::CENTER_BETWEEN_STAVES, P_TYPE::AUTO_ON_OFF, PropertyGroup::POSITION, false, "centerBetweenStaves", QT_TRANSLATE_NOOP("engraving/propertyName", "center between staves") },
413 :
414 : { Pid::POS_ABOVE, P_TYPE::ABSOLUTE, PropertyGroup::POSITION, false, "posAbove", QT_TRANSLATE_NOOP("engraving/propertyName", "position above") },
415 :
416 : { Pid::LOCATION_STAVES, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "staves", QT_TRANSLATE_NOOP("engraving/propertyName", "staves distance") },
417 : { Pid::LOCATION_VOICES, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "voices", QT_TRANSLATE_NOOP("engraving/propertyName", "voices distance") },
418 : { Pid::LOCATION_MEASURES, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "measures", QT_TRANSLATE_NOOP("engraving/propertyName", "measures distance") },
419 : { Pid::LOCATION_FRACTIONS, P_TYPE::FRACTION, PropertyGroup::APPEARANCE, false, "fractions", QT_TRANSLATE_NOOP("engraving/propertyName", "position distance") },
420 : { Pid::LOCATION_GRACE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "grace", QT_TRANSLATE_NOOP("engraving/propertyName", "grace note index") },
421 : { Pid::LOCATION_NOTE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "note", QT_TRANSLATE_NOOP("engraving/propertyName", "note index") },
422 :
423 : { Pid::VOICE, P_TYPE::SIZE_T, PropertyGroup::NONE, true, "voice", QT_TRANSLATE_NOOP("engraving/propertyName", "voice") },
424 : { Pid::POSITION, P_TYPE::ALIGN_H, PropertyGroup::POSITION, false, "position", QT_TRANSLATE_NOOP("engraving/propertyName", "position") },
425 :
426 : { Pid::CLEF_TYPE_CONCERT, P_TYPE::CLEF_TYPE, PropertyGroup::APPEARANCE, true, "concertClefType", QT_TRANSLATE_NOOP("engraving/propertyName", "concert clef type") },
427 : { Pid::CLEF_TYPE_TRANSPOSING, P_TYPE::CLEF_TYPE, PropertyGroup::APPEARANCE, true, "transposingClefType", QT_TRANSLATE_NOOP("engraving/propertyName", "transposing clef type") },
428 : { Pid::CLEF_TO_BARLINE_POS, P_TYPE::CLEF_TO_BARLINE_POS, PropertyGroup::APPEARANCE, true, "clefToBarlinePos", QT_TRANSLATE_NOOP("engraving/propertyName", "clef to barline position") },
429 : { Pid::KEY_CONCERT, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "concertKey", QT_TRANSLATE_NOOP("engraving/propertyName", "concert key") },
430 : { Pid::KEY, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "actualKey", QT_TRANSLATE_NOOP("engraving/propertyName", "key") },
431 : { Pid::ACTION, P_TYPE::ACTION_TYPE, PropertyGroup::APPEARANCE, false, "action", nullptr },
432 : { Pid::MIN_DISTANCE, P_TYPE::SPATIUM, PropertyGroup::POSITION, false, "minDistance", QT_TRANSLATE_NOOP("engraving/propertyName", "autoplace minimum distance") },
433 :
434 : { Pid::ARPEGGIO_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "arpeggio type") },
435 : { Pid::CHORD_LINE_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "chord line type") },
436 : { Pid::CHORD_LINE_STRAIGHT, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "straight", QT_TRANSLATE_NOOP("engraving/propertyName", "straight chord line") },
437 : { Pid::CHORD_LINE_WAVY, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "wavy", QT_TRANSLATE_NOOP("engraving/propertyName", "wavy chord line") },
438 : { Pid::TREMOLO_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "subtype", QT_TRANSLATE_NOOP("engraving/propertyName", "tremolo type") },
439 : { Pid::TREMOLO_STYLE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "strokeStyle", QT_TRANSLATE_NOOP("engraving/propertyName", "tremolo style") },
440 : { Pid::HARMONY_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "harmonyType", QT_TRANSLATE_NOOP("engraving/propertyName", "harmony type") },
441 :
442 : { Pid::ARPEGGIO_SPAN, P_TYPE::INT, PropertyGroup::NONE, true, "arpeggioSpan", QT_TRANSLATE_NOOP("engraving/propertyName", "arpeggio span") },
443 :
444 : { Pid::BRACKET_HOOK_LEN, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, true, "bracketHookLen", QT_TRANSLATE_NOOP("engraving/propertyName", "bracket hook length") },
445 : { Pid::BRACKET_HOOK_POS, P_TYPE::DIRECTION_V, PropertyGroup::NONE, true, "bracketHookPos", QT_TRANSLATE_NOOP("engraving/propertyName", "bracket hook position") },
446 : { Pid::BRACKET_RIGHT_SIDE, P_TYPE::BOOL, PropertyGroup::NONE, true, "bracketRightSide", QT_TRANSLATE_NOOP("engraving/propertyName", "bracket right side") },
447 :
448 :
449 : { Pid::BEND_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "bendType", QT_TRANSLATE_NOOP("engraving/propertyName", "bend type") },
450 : { Pid::BEND_CURVE, P_TYPE::PITCH_VALUES, PropertyGroup::APPEARANCE, true, "bendCurve", QT_TRANSLATE_NOOP("engraving/propertyName", "bend curve") },
451 : { Pid::BEND_VERTEX_OFF, P_TYPE::POINT, PropertyGroup::POSITION , false, "bendVertexOffset", QT_TRANSLATE_NOOP("engraving/propertyName", "bend vertex offset") },
452 : { Pid::BEND_SHOW_HOLD_LINE, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "bendShowHoldLine", QT_TRANSLATE_NOOP("engraving/propertyName", "bend show hold line") },
453 : { Pid::BEND_START_TIME_FACTOR, P_TYPE::REAL, PropertyGroup::APPEARANCE, true, "bendStartTimeFactor", QT_TRANSLATE_NOOP("engraving/propertyName", "bend start time factor") },
454 : { Pid::BEND_TARGET_TIME_FACTOR, P_TYPE::REAL, PropertyGroup::APPEARANCE, true, "bendTargetTimeFactor", QT_TRANSLATE_NOOP("engraving/propertyName", "bend target time factor") },
455 : { Pid::BEND_END_TIME_FACTOR, P_TYPE::REAL, PropertyGroup::APPEARANCE, true, "bendEndTimeFactor", QT_TRANSLATE_NOOP("engraving/propertyName", "bend end time factor") },
456 : { Pid::GUITAR_DIVE_TAB_POS , P_TYPE::DIRECTION_V, PropertyGroup::POSITION, true, "guitarDiveTabPos", QT_TRANSLATE_NOOP("engraving/propertyName", "guitar dive tab pos") },
457 : { Pid::GUITAR_BEND_AMOUNT , P_TYPE::INT, PropertyGroup::NONE, true, "guitarBendAmount", QT_TRANSLATE_NOOP("engraving/propertyName", "guitar bend amount") },
458 : { Pid::VIBRATO_LINE_TYPE , P_TYPE::INT, PropertyGroup::NONE, true, "guitarDipTremoloLine", QT_TRANSLATE_NOOP("engraving/propertyName", "guitar dip tremolo line") },
459 : { Pid::GUITAR_DIVE_IS_SLACK , P_TYPE::BOOL, PropertyGroup::NONE, true, "guitarDiveIsSlack", QT_TRANSLATE_NOOP("engraving/propertyName", "guitar dive is slack") },
460 :
461 : { Pid::TREMOLOBAR_TYPE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "tremoloBarType", QT_TRANSLATE_NOOP("engraving/propertyName", "tremolobar type") },
462 : { Pid::TREMOLOBAR_CURVE, P_TYPE::PITCH_VALUES, PropertyGroup::APPEARANCE, true, "tremoloBarCurve", QT_TRANSLATE_NOOP("engraving/propertyName", "tremolobar curve") },
463 :
464 : { Pid::START_WITH_LONG_NAMES, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "startWithLongNames", QT_TRANSLATE_NOOP("engraving/propertyName", "start with long names") },
465 : { Pid::START_WITH_MEASURE_ONE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "startWithMeasureOne", QT_TRANSLATE_NOOP("engraving/propertyName", "start with measure one") },
466 : { Pid::FIRST_SYSTEM_INDENTATION, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "firstSystemIndentation", QT_TRANSLATE_NOOP("engraving/propertyName", "first system indentation") },
467 :
468 : { Pid::PREFER_SHARP_FLAT, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "preferSharpFlat", QT_TRANSLATE_NOOP("engraving/propertyName", "prefer sharps or flats") },
469 :
470 : { Pid::PLAY_TECH_TYPE, P_TYPE::PLAYTECH_TYPE, PropertyGroup::APPEARANCE, true, "playTechType", QT_TRANSLATE_NOOP("engraving/propertyName", "playing technique type") },
471 :
472 : { Pid::TEMPO_CHANGE_TYPE, P_TYPE::TEMPOCHANGE_TYPE, PropertyGroup::APPEARANCE, true, "tempoChangeType", QT_TRANSLATE_NOOP("engraving/propertyName", "gradual tempo change type") },
473 : { Pid::TEMPO_EASING_METHOD, P_TYPE::CHANGE_METHOD, PropertyGroup::APPEARANCE, true, "tempoEasingMethod", QT_TRANSLATE_NOOP("engraving/propertyName", "tempo easing method") },
474 : { Pid::TEMPO_CHANGE_FACTOR, P_TYPE::REAL, PropertyGroup::APPEARANCE, true, "tempoChangeFactor", QT_TRANSLATE_NOOP("engraving/propertyName", "tempo change factor") },
475 :
476 : { Pid::HARP_IS_DIAGRAM, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "isDiagram", QT_TRANSLATE_NOOP("engraving/propertyName", "is diagram") },
477 :
478 : { Pid::ACTIVE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "active", QT_TRANSLATE_NOOP("engraving/propertyName", "active") },
479 :
480 : { Pid::CAPO_FRET_POSITION, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "fretPosition", QT_TRANSLATE_NOOP("engraving/propertyName", "fret position") },
481 : { Pid::CAPO_IGNORED_STRINGS, P_TYPE::INT_VEC, PropertyGroup::APPEARANCE, true, "ignoredStrings", QT_TRANSLATE_NOOP("engraving/propertyName", "ignored strings") },
482 : { Pid::CAPO_GENERATE_TEXT, P_TYPE::BOOL, PropertyGroup::APPEARANCE, true, "generateText", QT_TRANSLATE_NOOP("engraving/propertyName", "automatically generate text") },
483 : { Pid::CAPO_TRANSPOSE_MODE, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "transposeMode", QT_TRANSLATE_NOOP("engraving/propertyName", "transposition behaviour") },
484 :
485 : { Pid::TIE_PLACEMENT, P_TYPE::TIE_PLACEMENT, PropertyGroup::APPEARANCE, true, "tiePlacement", QT_TRANSLATE_NOOP("engraving/propertyName", "tie placement") },
486 : { Pid::MIN_LENGTH, P_TYPE::SPATIUM, PropertyGroup::APPEARANCE, true, "minLength", QT_TRANSLATE_NOOP("engraving/propertyName", "minimum length") },
487 : { Pid::MASK_SLURTIE, P_TYPE::AUTO_ON_OFF, PropertyGroup::APPEARANCE, true, "maskSlurTie", QT_TRANSLATE_NOOP("engraving/propertyName", "mask slur/tie") },
488 : { Pid::PARTIAL_SPANNER_DIRECTION, P_TYPE::PARTIAL_SPANNER_DIRECTION, PropertyGroup::NONE, true, "partialSpannerDirection", QT_TRANSLATE_NOOP("engraving/propertyName", "partial spanner direction") },
489 :
490 : { Pid::POSITION_LINKED_TO_MASTER, P_TYPE::BOOL, PropertyGroup::NONE, false, "positionLinkedToMaster", QT_TRANSLATE_NOOP("engraving/propertyName", "position linked to main score") },
491 : { Pid::APPEARANCE_LINKED_TO_MASTER, P_TYPE::BOOL, PropertyGroup::NONE, false, "appearanceLinkedToMaster", QT_TRANSLATE_NOOP("engraving/propertyName", "appearance linked to main score") },
492 : { Pid::TEXT_LINKED_TO_MASTER, P_TYPE::BOOL, PropertyGroup::NONE, false, "textLinkedToMaster", QT_TRANSLATE_NOOP("engraving/propertyName", "text linked to main score") },
493 : { Pid::EXCLUDE_FROM_OTHER_PARTS, P_TYPE::BOOL, PropertyGroup::NONE, false, "excludeFromParts", QT_TRANSLATE_NOOP("engraving/propertyName", "exclude from parts") },
494 :
495 : { Pid::STRINGTUNINGS_STRINGS_COUNT, P_TYPE::INT, PropertyGroup::APPEARANCE, true, "stringsCount", QT_TRANSLATE_NOOP("engraving/propertyName", "strings count") },
496 : { Pid::STRINGTUNINGS_PRESET, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "preset", QT_TRANSLATE_NOOP("engraving/propertyName", "strings preset") },
497 : { Pid::STRINGTUNINGS_VISIBLE_STRINGS, P_TYPE::INT_VEC, PropertyGroup::APPEARANCE, true, "visibleStrings", QT_TRANSLATE_NOOP("engraving/propertyName", "visible strings") },
498 :
499 : { Pid::SCORE_FONT, P_TYPE::STRING, PropertyGroup::APPEARANCE, true, "scoreFont", QT_TRANSLATE_NOOP("engraving/propertyName", "score font") },
500 : { Pid::SYMBOLS_SIZE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "symbolsSize", QT_TRANSLATE_NOOP("engraving/propertyName", "symbols size") },
501 : { Pid::SYMBOL_ANGLE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "symbolAngle", QT_TRANSLATE_NOOP("engraving/propertyName", "symbol angle") },
502 : { Pid::TEXT_ANGLE, P_TYPE::REAL, PropertyGroup::APPEARANCE, false, "textAngle", QT_TRANSLATE_NOOP("engraving/propertyName", "text angle") },
503 :
504 : { Pid::APPLY_TO_ALL_STAVES, P_TYPE::BOOL, PropertyGroup::NONE, false, "applyToAllStaves", QT_TRANSLATE_NOOP("engraving/propertyName", "apply to all staves") },
505 : { Pid::IS_COURTESY, P_TYPE::BOOL, PropertyGroup::NONE, false, "isCourtesy", QT_TRANSLATE_NOOP("engraving/propertyName", "is courtesy") },
506 : { Pid::EXCLUDE_VERTICAL_ALIGN, P_TYPE::BOOL, PropertyGroup::POSITION, false, "excludeVerticalAlign", QT_TRANSLATE_NOOP("engraving/propertyName", "exclude vertical align") },
507 :
508 : { Pid::SHOW_MEASURE_NUMBERS, P_TYPE::AUTO_ON_OFF, PropertyGroup::NONE, false, "showMeasureNumbers", QT_TRANSLATE_NOOP("engraving/propertyName", "show measure numbers") },
509 : { Pid::PLAY_COUNT_TEXT_SETTING, P_TYPE::AUTO_CUSTOM_HIDE, PropertyGroup::APPEARANCE, false, "playCountTextSetting", QT_TRANSLATE_NOOP("engraving/propertyName", "play count text setting") },
510 : { Pid::PLAY_COUNT_TEXT, P_TYPE::STRING, PropertyGroup::APPEARANCE, false, "playCountCustomText", QT_TRANSLATE_NOOP("engraving/propertyName", "play count text") },
511 :
512 : { Pid::ALIGN_WITH_OTHER_RESTS, P_TYPE::BOOL, PropertyGroup::POSITION, false, "alignWithOtherRests", QT_TRANSLATE_NOOP("engraving/propertyName", "align with other rests in the same voice") },
513 :
514 : { Pid::STAFF_CUTAWAY, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "cutaway") },
515 : { Pid::STAFF_HIDE_SYSTEM_BARLINE, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "hide system barline") },
516 : { Pid::STAFF_MERGE_MATCHING_RESTS, P_TYPE::INT, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "merge matching rests") },
517 : { Pid::STAFF_REFLECT_TRANSPOSITION, P_TYPE::BOOL, PropertyGroup::APPEARANCE, false, "", QT_TRANSLATE_NOOP("engraving/propertyName", "reflect transposition") },
518 :
519 : { Pid::SHARED_PART_ENABLED, P_TYPE::BOOL, PropertyGroup::NONE, false, "sharedPartEnabled", QT_TRANSLATE_NOOP("engraving/propertyName", "shared part enabled") },
520 :
521 : { Pid::END, P_TYPE::INT, PropertyGroup::NONE, false, "++end++", nullptr }
522 : };
523 : /* *INDENT-ON* */
524 :
525 : static constexpr bool isPropertyListConsistent()
526 : {
527 : for (int i = 0; i <= int(Pid::END); ++i) {
528 : if (propertyList[i].id != Pid(i)) {
529 : return false;
530 : }
531 : }
532 : return true;
533 : }
534 :
535 : static_assert(isPropertyListConsistent(), "propertyList is not consistent with Pid enum");
536 :
537 : //---------------------------------------------------------
538 : // propertyId
539 : //---------------------------------------------------------
540 :
541 0 : Pid propertyId(const AsciiStringView& s)
542 : {
543 0 : for (const PropertyMetaData& pd : propertyList) {
544 0 : if (s == pd.name) {
545 0 : return pd.id;
546 : }
547 : }
548 0 : return Pid::END;
549 : }
550 :
551 : //---------------------------------------------------------
552 : // propertyType
553 : //---------------------------------------------------------
554 :
555 2758007 : P_TYPE propertyType(Pid id)
556 : {
557 2758007 : return propertyList[size_t(id)].type;
558 : }
559 :
560 6922 : PropertyGroup propertyGroup(Pid id)
561 : {
562 6922 : return propertyList[size_t(id)].group;
563 : }
564 :
565 : //---------------------------------------------------------
566 : // propertyLink
567 : //---------------------------------------------------------
568 :
569 482 : bool propertyLink(Pid id)
570 : {
571 482 : return propertyList[size_t(id)].link;
572 : }
573 :
574 : //---------------------------------------------------------
575 : // propertyLinkSameScore
576 : //---------------------------------------------------------
577 :
578 0 : bool propertyLinkSameScore(Pid id)
579 : {
580 0 : assert(id < Pid::END);
581 0 : switch (id) {
582 0 : case Pid::STAFF_BARLINE_SPAN:
583 : case Pid::STAFF_BARLINE_SPAN_FROM:
584 : case Pid::STAFF_BARLINE_SPAN_TO:
585 0 : return false;
586 0 : default:
587 0 : return true;
588 : }
589 : }
590 :
591 : //---------------------------------------------------------
592 : // propertyName
593 : //---------------------------------------------------------
594 :
595 557031 : const char* propertyName(Pid id)
596 : {
597 557031 : return propertyList[size_t(id)].name;
598 : }
599 :
600 : //---------------------------------------------------------
601 : // propertyUserName
602 : //---------------------------------------------------------
603 :
604 0 : String propertyUserName(Pid id)
605 : {
606 0 : return muse::mtrc("engraving/propertyName", propertyList[size_t(id)].userName);
607 : }
608 :
609 : //---------------------------------------------------------
610 : // propertyFromString
611 : //---------------------------------------------------------
612 :
613 0 : PropertyValue propertyFromString(P_TYPE type, String)
614 : {
615 0 : switch (type) {
616 0 : case P_TYPE::BEAM_MODE:
617 0 : return PropertyValue(int(0));
618 0 : case P_TYPE::GROUPS:
619 : // unsupported
620 0 : return PropertyValue();
621 0 : case P_TYPE::DURATION_TYPE_WITH_DOTS:
622 : case P_TYPE::INT_VEC:
623 0 : return PropertyValue();
624 0 : default:
625 0 : break;
626 : }
627 0 : return PropertyValue();
628 : }
629 :
630 : //---------------------------------------------------------
631 : // propertyToString
632 : // Originally extracted from XmlWriter
633 : //---------------------------------------------------------
634 :
635 79516 : String propertyToString(Pid id, const PropertyValue& value, bool mscx)
636 : {
637 79516 : if (!value.isValid()) {
638 0 : return String();
639 : }
640 :
641 79516 : switch (id) {
642 0 : case Pid::SYSTEM_BRACKET: // system bracket type
643 0 : return String::fromAscii(TConv::toXml(BracketType(value.toInt())).ascii());
644 2618 : case Pid::ACCIDENTAL_TYPE:
645 2618 : return String::fromAscii(Accidental::subtype2name(AccidentalType(value.toInt())).ascii());
646 108 : case Pid::OTTAVA_TYPE:
647 108 : return String::fromAscii(Ottava::ottavaTypeName(OttavaType(value.toInt())));
648 161 : case Pid::TREMOLO_TYPE:
649 161 : return String::fromAscii(TConv::toXml(TremoloType(value.toInt())).ascii());
650 0 : case Pid::TRILL_TYPE:
651 0 : return String::fromAscii(TConv::toXml(TrillType(value.toInt())).ascii());
652 0 : case Pid::VIBRATO_TYPE:
653 0 : return String::fromAscii(TConv::toXml(VibratoType(value.toInt())).ascii());
654 76629 : default:
655 76629 : break;
656 : }
657 :
658 76629 : switch (propertyType(id)) {
659 0 : case P_TYPE::DURATION_TYPE_WITH_DOTS:
660 0 : ASSERT_X("unknown: TDURATION");
661 : break;
662 0 : case P_TYPE::TEMPO:
663 0 : ASSERT_X("unknown: TEMPO");
664 : break;
665 0 : case P_TYPE::GROUPS:
666 0 : ASSERT_X("unknown: GROUPS");
667 : break;
668 76629 : default: {
669 76629 : break;
670 : }
671 : }
672 :
673 76629 : if (!mscx) {
674 : // String representation for properties that are written
675 : // to MSCX in other way (e.g. as XML tag properties).
676 0 : switch (value.type()) {
677 0 : case P_TYPE::POINT: {
678 0 : const PointF p(value.value<PointF>());
679 0 : return String(u"%1;%2").arg(String::number(p.x()), String::number(p.y()));
680 : }
681 0 : case P_TYPE::SIZE: {
682 0 : const SizeF s(value.value<SizeF>());
683 0 : return String(u"%1x%2").arg(String::number(s.width()), String::number(s.height()));
684 : }
685 0 : case P_TYPE::STRING: {
686 0 : return value.value<String>();
687 : }
688 : // TODO: support QVariant::Rect and QVariant::RectF?
689 0 : default:
690 0 : break;
691 : }
692 : }
693 :
694 76629 : return String();
695 : }
696 : }
|