LCOV - code coverage report
Current view: top level - src/engraving/dom - property.cpp Coverage Total Hit
Test: filtered_coverage.info Lines: 32.9 % 73 24
Test Date: 2026-11-05 04:07:02

            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              : }
        

Generated by: LCOV version 2.0-1