fix style loading
This commit is contained in:
parent
55b967cc82
commit
9d6dcb816a
5 changed files with 32 additions and 51 deletions
|
@ -290,6 +290,7 @@ void MScore::init()
|
|||
if (!defStyle.isEmpty()) {
|
||||
QFile f(defStyle);
|
||||
if (f.open(QIODevice::ReadOnly)) {
|
||||
qDebug("load default style <%s>", qPrintable(defStyle));
|
||||
_defaultStyle.load(&f);
|
||||
f.close();
|
||||
}
|
||||
|
@ -299,6 +300,7 @@ void MScore::init()
|
|||
if (!partStyle.isEmpty()) {
|
||||
QFile f(partStyle);
|
||||
if (f.open(QIODevice::ReadOnly)) {
|
||||
qDebug("load default style for parts <%s>", qPrintable(partStyle));
|
||||
_defaultStyleForParts = new MStyle(_defaultStyle);
|
||||
_defaultStyleForParts->load(&f);
|
||||
_defaultStyleForParts->precomputeValues();
|
||||
|
|
|
@ -2102,7 +2102,7 @@ static bool readScore(Score* score, XmlReader& e)
|
|||
else {
|
||||
e.tracks().clear();
|
||||
MasterScore* m = score->masterScore();
|
||||
Score* s = new Score(m, MScore::baseStyle());
|
||||
Score* s = new Score(m, MScore::defaultStyle());
|
||||
Excerpt* ex = new Excerpt(m);
|
||||
|
||||
ex->setPartScore(s);
|
||||
|
|
|
@ -1403,6 +1403,19 @@ bool MStyle::readProperties(XmlReader& e)
|
|||
qreal y = e.doubleAttribute("y", 0.0);
|
||||
set(idx, QPointF(x, y));
|
||||
}
|
||||
else if (!strcmp("QSizeF", type)) {
|
||||
qreal x = e.doubleAttribute("w", 0.0);
|
||||
qreal y = e.doubleAttribute("h", 0.0);
|
||||
set(idx, QPointF(x, y));
|
||||
}
|
||||
else if (!strcmp("QColor", type)) {
|
||||
QColor c;
|
||||
c.setRed(e.intAttribute("r"));
|
||||
c.setGreen(e.intAttribute("g"));
|
||||
c.setBlue(e.intAttribute("b"));
|
||||
c.setAlpha(e.intAttribute("a", 255));
|
||||
set(idx, c);
|
||||
}
|
||||
else {
|
||||
qFatal("unhandled type %s", type);
|
||||
}
|
||||
|
|
|
@ -65,7 +65,7 @@ EditStyle::EditStyle(Score* s, QWidget* parent)
|
|||
}
|
||||
|
||||
styleWidgets = {
|
||||
// idx --- showPercent --- widget --- resetButton
|
||||
// idx --- showPercent --- widget --- resetButton
|
||||
{ StyleIdx::voltaLineStyle, false, voltaLineStyle, resetVoltaLineStyle },
|
||||
{ StyleIdx::ottavaLineStyle, false, ottavaLineStyle, resetOttavaLineStyle },
|
||||
{ StyleIdx::pedalLineStyle, false, pedalLineStyle, resetPedalLineStyle },
|
||||
|
@ -597,28 +597,12 @@ QVariant EditStyle::getValue(StyleIdx idx)
|
|||
if (sw.showPercent)
|
||||
v = v.toDouble() * 0.01;
|
||||
return v;
|
||||
#if 0
|
||||
if (sw.showPercent)
|
||||
return qobject_cast<QSpinBox*>(sw.widget)->value() * 0.01;
|
||||
else
|
||||
return qobject_cast<QDoubleSpinBox*>(sw.widget)->value();
|
||||
#endif
|
||||
}
|
||||
else if (!strcmp("bool", type)) {
|
||||
QVariant v = sw.widget->property("checked");
|
||||
if (!v.isValid())
|
||||
unhandledType(&sw);
|
||||
return v;
|
||||
#if 0
|
||||
if (qobject_cast<QCheckBox*>(sw.widget))
|
||||
return qobject_cast<QCheckBox*>(sw.widget)->isChecked();
|
||||
else if (qobject_cast<QGroupBox*>(sw.widget))
|
||||
return qobject_cast<QGroupBox*>(sw.widget)->isChecked();
|
||||
else if (qobject_cast<QRadioButton*>(sw.widget))
|
||||
return qobject_cast<QRadioButton*>(sw.widget)->isChecked();
|
||||
else
|
||||
qFatal("unhandled bool");
|
||||
#endif
|
||||
}
|
||||
else if (!strcmp("int", type)) {
|
||||
if (qobject_cast<QComboBox*>(sw.widget)) {
|
||||
|
@ -669,52 +653,34 @@ void EditStyle::setValues()
|
|||
for (const StyleWidget& sw : styleWidgets) {
|
||||
if (sw.widget)
|
||||
sw.widget->blockSignals(true);
|
||||
QVariant val = lstyle.value(sw.idx);
|
||||
const char* type = MStyle::valueType(sw.idx);
|
||||
if (sw.reset)
|
||||
sw.reset->setEnabled(!lstyle.isDefault(sw.idx));
|
||||
|
||||
if (!strcmp("Ms::Spatium", type)) {
|
||||
if (sw.showPercent)
|
||||
qobject_cast<QSpinBox*>(sw.widget)->setValue(int(lstyle.value(sw.idx).value<Spatium>().val() * 100.0));
|
||||
qobject_cast<QSpinBox*>(sw.widget)->setValue(int(val.value<Spatium>().val() * 100.0));
|
||||
else
|
||||
qobject_cast<QDoubleSpinBox*>(sw.widget)->setValue(lstyle.value(sw.idx).value<Spatium>().val());
|
||||
qobject_cast<QDoubleSpinBox*>(sw.widget)->setValue(val.value<Spatium>().val());
|
||||
}
|
||||
else if (!strcmp("double", type)) {
|
||||
if (!sw.widget->setProperty("value", lstyle.value(sw.idx)))
|
||||
unhandledType(&sw);
|
||||
#if 0
|
||||
QDoubleSpinBox* sb = qobject_cast<QDoubleSpinBox*>(sw.widget);
|
||||
if (!sb)
|
||||
unhandledType(&sw);
|
||||
if (sw.showPercent)
|
||||
sb->setValue(int(lstyle.value(sw.idx).toDouble() * 100.0));
|
||||
else
|
||||
sb->setValue(lstyle.value(sw.idx).toDouble());
|
||||
#endif
|
||||
val = QVariant(val.toDouble() * 100);
|
||||
if (!sw.widget->setProperty("value", val))
|
||||
unhandledType(&sw);
|
||||
}
|
||||
else if (!strcmp("bool", type)) {
|
||||
if (!sw.widget->setProperty("checked", lstyle.value(sw.idx)))
|
||||
if (!sw.widget->setProperty("checked", val))
|
||||
unhandledType(&sw);
|
||||
#if 0
|
||||
if (qobject_cast<QCheckBox*>(sw.widget))
|
||||
qobject_cast<QCheckBox*>(sw.widget)->setChecked(lstyle.value(sw.idx).toBool());
|
||||
else if (qobject_cast<QGroupBox*>(sw.widget))
|
||||
qobject_cast<QGroupBox*>(sw.widget)->setChecked(lstyle.value(sw.idx).toBool());
|
||||
else if (qobject_cast<QRadioButton*>(sw.widget))
|
||||
qobject_cast<QRadioButton*>(sw.widget)->setChecked(lstyle.value(sw.idx).toBool());
|
||||
else if (qobject_cast<QPushButton*>(sw.widget))
|
||||
qobject_cast<QPushButton*>(sw.widget)->setChecked(lstyle.value(sw.idx).toBool());
|
||||
else
|
||||
unhandledType(&sw);
|
||||
#endif
|
||||
}
|
||||
else if (!strcmp("int", type)) {
|
||||
if (qobject_cast<QComboBox*>(sw.widget)) {
|
||||
QComboBox* cb = qobject_cast<QComboBox*>(sw.widget);
|
||||
cb->setCurrentIndex(cb->findData(lstyle.value(sw.idx)));
|
||||
cb->setCurrentIndex(cb->findData(val));
|
||||
}
|
||||
else if (qobject_cast<QSpinBox*>(sw.widget)) {
|
||||
qobject_cast<QSpinBox*>(sw.widget)->setValue(lstyle.value(sw.idx).toInt()
|
||||
qobject_cast<QSpinBox*>(sw.widget)->setValue(val.toInt()
|
||||
* (sw.showPercent ? 100 : 1));
|
||||
}
|
||||
else
|
||||
|
@ -722,25 +688,25 @@ void EditStyle::setValues()
|
|||
}
|
||||
else if (!strcmp("QString", type)) {
|
||||
if (qobject_cast<QFontComboBox*>(sw.widget))
|
||||
static_cast<QFontComboBox*>(sw.widget)->setCurrentFont(QFont(lstyle.value(sw.idx).toString()));
|
||||
static_cast<QFontComboBox*>(sw.widget)->setCurrentFont(QFont(val.toString()));
|
||||
else if (qobject_cast<QComboBox*>(sw.widget)) {
|
||||
QComboBox* cb = qobject_cast<QComboBox*>(sw.widget);
|
||||
for (int i = 0; i < cb->count(); ++i) {
|
||||
if (cb->itemData(i) == lstyle.value(sw.idx).toString()) {
|
||||
if (cb->itemData(i) == val.toString()) {
|
||||
cb->setCurrentIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (qobject_cast<QTextEdit*>(sw.widget))
|
||||
static_cast<QTextEdit*>(sw.widget)->setPlainText(lstyle.value(sw.idx).toString());
|
||||
static_cast<QTextEdit*>(sw.widget)->setPlainText(val.toString());
|
||||
else
|
||||
unhandledType(&sw);
|
||||
}
|
||||
else if (!strcmp("Ms::Direction", type)) {
|
||||
QComboBox* cb = qobject_cast<QComboBox*>(sw.widget);
|
||||
if (cb)
|
||||
cb->setCurrentIndex(int(lstyle.value(sw.idx).value<Direction>()));
|
||||
cb->setCurrentIndex(int(val.value<Direction>()));
|
||||
else
|
||||
unhandledType(&sw);
|
||||
}
|
||||
|
|
|
@ -324,7 +324,7 @@ MasterScore* MuseScore::readScore(const QString& name)
|
|||
if (name.isEmpty())
|
||||
return 0;
|
||||
|
||||
MasterScore* score = new MasterScore(MScore::baseStyle());
|
||||
MasterScore* score = new MasterScore(MScore::defaultStyle());
|
||||
setMidiReopenInProgress(name);
|
||||
Score::FileError rv = Ms::readScore(score, name, false);
|
||||
if (rv == Score::FileError::FILE_TOO_OLD || rv == Score::FileError::FILE_TOO_NEW || rv == Score::FileError::FILE_CORRUPTED) {
|
||||
|
@ -335,7 +335,7 @@ MasterScore* MuseScore::readScore(const QString& name)
|
|||
delete score;
|
||||
score = new MasterScore();
|
||||
score->setMovements(new Movements());
|
||||
score->setStyle(MScore::baseStyle());
|
||||
score->setStyle(MScore::defaultStyle());
|
||||
rv = Ms::readScore(score, name, true);
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue