Commit 91dafd60 authored by Simon Eugster's avatar Simon Eugster

WIP: Remove QLocales

Related: #713
parent 36729b22
Pipeline #24486 passed with stage
in 14 minutes and 28 seconds
......@@ -142,8 +142,6 @@ template <typename AssetType> bool AbstractAssetsRepository<AssetType>::parseInf
QDomElement eff = doc.createElement(QStringLiteral("effect"));
eff.setAttribute(QStringLiteral("tag"), id);
eff.setAttribute(QStringLiteral("id"), id);
QLocale locale;
////qCDebug(KDENLIVE_LOG)<<"Effect: "<<id;
Mlt::Properties param_props((mlt_properties)metadata->get_data("parameters"));
for (int j = 0; param_props.is_valid() && j < param_props.count(); ++j) {
......@@ -165,10 +163,10 @@ template <typename AssetType> bool AbstractAssetsRepository<AssetType>::parseInf
if (paramType == QLatin1String("float")) {
// Float must be converted using correct locale
if (paramdesc.get("maximum")) {
params.setAttribute(QStringLiteral("max"), locale.toString(paramdesc.get_double("maximum")));
params.setAttribute(QStringLiteral("max"), QString::number(paramdesc.get_double("maximum"), 'f'));
}
if (paramdesc.get("minimum")) {
params.setAttribute(QStringLiteral("min"), locale.toString(paramdesc.get_double("minimum")));
params.setAttribute(QStringLiteral("min"), QString::number(paramdesc.get_double("minimum"), 'f'));
}
} else {
if (paramdesc.get("maximum")) {
......@@ -214,12 +212,12 @@ template <typename AssetType> bool AbstractAssetsRepository<AssetType>::parseInf
if (paramType == QLatin1String("float")) {
// floats have to be converted using correct locale
if (paramdesc.get("default")) {
params.setAttribute(QStringLiteral("default"), locale.toString(paramdesc.get_double("default")));
params.setAttribute(QStringLiteral("default"), QString::number(paramdesc.get_double("default"), 'f'));
}
if (paramdesc.get("value")) {
params.setAttribute(QStringLiteral("value"), locale.toString(paramdesc.get_double("value")));
params.setAttribute(QStringLiteral("value"), QString::number(paramdesc.get_double("value"), 'f'));
} else {
params.setAttribute(QStringLiteral("value"), locale.toString(paramdesc.get_double("default")));
params.setAttribute(QStringLiteral("value"), QString::number(paramdesc.get_double("default"), 'f'));
}
} else {
if (paramdesc.get("default")) {
......
......@@ -442,8 +442,12 @@ QVariant KeyframeModel::data(const QModelIndex &index, int role) const
case NormalizedValueRole: {
if (m_paramType == ParamType::AnimatedRect) {
const QString &data = it->second.second.toString();
QLocale locale;
return locale.toDouble(data.section(QLatin1Char(' '), -1));
bool ok;
double converted = data.section(QLatin1Char(' '), -1).toDouble(&ok);
if (!ok) {
qDebug() << "QLocale: Could not convert animated rect opacity" << data;
}
return converted;
}
double val = it->second.second.toDouble();
if (auto ptr = m_model.lock()) {
......@@ -713,7 +717,6 @@ void KeyframeModel::parseAnimProperty(const QString &prop)
{
Fun undo = []() { return true; };
Fun redo = []() { return true; };
QLocale locale;
disconnect(this, &KeyframeModel::modelChanged, this, &KeyframeModel::sendModification);
removeAllKeyframes(undo, redo);
int in = 0;
......@@ -749,7 +752,7 @@ void KeyframeModel::parseAnimProperty(const QString &prop)
case ParamType::AnimatedRect: {
mlt_rect rect = mlt_prop.anim_get_rect("key", frame);
if (useOpacity) {
value = QVariant(QStringLiteral("%1 %2 %3 %4 %5").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h).arg(locale.toString(rect.o)));
value = QVariant(QStringLiteral("%1 %2 %3 %4 %5").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h).arg(rect.o, 0, 'f'));
} else {
value = QVariant(QStringLiteral("%1 %2 %3 %4").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h));
}
......@@ -782,7 +785,6 @@ void KeyframeModel::resetAnimProperty(const QString &prop)
removeAllKeyframes(undo, redo);
Mlt::Properties mlt_prop;
QLocale locale;
int in = 0;
bool useOpacity = true;
if (auto ptr = m_model.lock()) {
......@@ -812,7 +814,7 @@ void KeyframeModel::resetAnimProperty(const QString &prop)
case ParamType::AnimatedRect: {
mlt_rect rect = mlt_prop.anim_get_rect("key", frame);
if (useOpacity) {
value = QVariant(QStringLiteral("%1 %2 %3 %4 %5").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h).arg(locale.toString(rect.o)));
value = QVariant(QStringLiteral("%1 %2 %3 %4 %5").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h).arg(QString::number(rect.o, 'f')));
} else {
value = QVariant(QStringLiteral("%1 %2 %3 %4").arg(rect.x).arg(rect.y).arg(rect.w).arg(rect.h));
}
......@@ -877,10 +879,8 @@ QVariant KeyframeModel::getInterpolatedValue(int p) const
QVariant KeyframeModel::updateInterpolated(const QVariant &interpValue, double val)
{
QStringList vals = interpValue.toString().split(QLatin1Char(' '));
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
if (!vals.isEmpty()) {
vals[vals.size() - 1] = locale.toString(val);
vals[vals.size() - 1] = QString::number(val, 'f');
}
return vals.join(QLatin1Char(' '));
}
......@@ -938,14 +938,13 @@ QVariant KeyframeModel::getInterpolatedValue(const GenTime &pos) const
return QVariant();
} else if (m_paramType == ParamType::AnimatedRect) {
if (!animData.isEmpty()) {
QLocale locale;
mlt_prop.set("key", animData.toUtf8().constData());
// This is a fake query to force the animation to be parsed
(void)mlt_prop.anim_get_double("key", 0, out);
mlt_rect rect = mlt_prop.anim_get_rect("key", pos.frames(pCore->getCurrentFps()));
QString res = QStringLiteral("%1 %2 %3 %4").arg((int)rect.x).arg((int)rect.y).arg((int)rect.w).arg((int)rect.h);
if (useOpacity) {
res.append(QStringLiteral(" %1").arg(locale.toString(rect.o)));
res.append(QStringLiteral(" %1").arg(QString::number(rect.o, 'f')));
}
return QVariant(res);
}
......
......@@ -51,8 +51,6 @@ AssetParameterModel::AssetParameterModel(std::unique_ptr<Mlt::Properties> asset,
bool needsLocaleConversion = false;
QChar separator, oldSeparator;
// Check locale, default effects xml has no LC_NUMERIC defined and always uses the C locale
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
if (assetXml.hasAttribute(QStringLiteral("LC_NUMERIC"))) {
QLocale effectLocale = QLocale(assetXml.attribute(QStringLiteral("LC_NUMERIC")));
if (QLocale::c().decimalPoint() != effectLocale.decimalPoint()) {
......@@ -112,10 +110,8 @@ AssetParameterModel::AssetParameterModel(std::unique_ptr<Mlt::Properties> asset,
currentRow.xml = currentParameter;
if (value.isEmpty()) {
QVariant defaultValue = parseAttribute(m_ownerId, QStringLiteral("default"), currentParameter);
value = defaultValue.type() == QVariant::Double ? locale.toString(defaultValue.toDouble()) : defaultValue.toString();
}
if (name == "variance") {
qDebug() << "Hey";
value = defaultValue.toString();
qDebug() << "QLocale: Default value is" << defaultValue << "parsed:" << value;
}
bool isFixed = (type == QLatin1String("fixed"));
if (isFixed) {
......@@ -136,6 +132,7 @@ AssetParameterModel::AssetParameterModel(std::unique_ptr<Mlt::Properties> asset,
if (fixDecimalPoint) {
bool converted = true;
QString originalValue(value);
switch (currentRow.type) {
case ParamType::KeyframeParam:
case ParamType::Position:
......@@ -146,12 +143,14 @@ AssetParameterModel::AssetParameterModel(std::unique_ptr<Mlt::Properties> asset,
// Fix values like <position>=50 20 1920 1080 0,75
value.replace(QRegExp(R"((=\d+ \d+ \d+ \d+ \d+),(\d+))"), "\\1.\\2");
break;
case ParamType::ColorWheel:
// Colour wheel has 3 separate properties: prop_r, prop_g and prop_b, always numbers
case ParamType::Double:
case ParamType::Hidden:
case ParamType::List:
// Despite its name, a list type parameter is a single value *chosen from* a list.
// If it contains a non-“.” decimal separator, it is very likely wrong.
// Fall-through, treat like Double
case ParamType::Double:
case ParamType::Hidden:
case ParamType::Bezier_spline:
value.replace(originalDecimalPoint, ".");
break;
......@@ -167,7 +166,6 @@ AssetParameterModel::AssetParameterModel(std::unique_ptr<Mlt::Properties> asset,
// All fine
converted = false;
break;
case ParamType::ColorWheel:
case ParamType::Curve:
case ParamType::Geometry:
case ParamType::Switch:
......@@ -182,7 +180,11 @@ AssetParameterModel::AssetParameterModel(std::unique_ptr<Mlt::Properties> asset,
break;
}
if (converted) {
qDebug() << "Decimal point conversion: " << name << "=" << value;
if (value != originalValue) {
qDebug() << "Decimal point conversion: " << name << "converted from" << originalValue << "to" << value;
} else {
qDebug() << "Decimal point conversion: " << name << " is already ok: " << value;
}
} else {
qDebug() << "No fixing needed for" << name << "=" << value;
}
......@@ -287,8 +289,6 @@ void AssetParameterModel::setParameter(const QString &name, int value, bool upda
void AssetParameterModel::internalSetParameter(const QString &name, const QString &paramValue, const QModelIndex &paramIndex)
{
Q_ASSERT(m_asset->is_valid());
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
// TODO: this does not really belong here, but I don't see another way to do it so that undo works
if (data(paramIndex, AssetParameterModel::TypeRole).value<ParamType>() == ParamType::Curve) {
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
......@@ -316,13 +316,7 @@ void AssetParameterModel::internalSetParameter(const QString &name, const QStrin
}
}
bool conversionSuccess = true;
double doubleValue = 0;
if (paramValue.simplified().contains(QLatin1Char(' '))) {
// Some locale interpret a space as thousands separator
conversionSuccess = false;
} else {
doubleValue = locale.toDouble(paramValue, &conversionSuccess);
}
double doubleValue = paramValue.toDouble(&conversionSuccess);
if (conversionSuccess) {
m_asset->set(name.toLatin1().constData(), doubleValue);
if (m_fixedParams.count(name) == 0) {
......@@ -640,9 +634,12 @@ QVariant AssetParameterModel::parseAttribute(const ObjectId &owner, const QStrin
if (attribute == QLatin1String("default")) {
return content.toDouble();
}
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
return locale.toDouble(content);
bool ok;
double converted = content.toDouble(&ok);
if (!ok) {
qDebug() << "QLocale: Could not load double parameter" << content;
}
return converted;
}
if (attribute == QLatin1String("default")) {
if (type == ParamType::RestrictedAnim) {
......@@ -656,11 +653,6 @@ QVariant AssetParameterModel::parseAttribute(const ObjectId &owner, const QStrin
return res;
}
return defaultValue.isNull() ? content : defaultValue;
} else if (type == ParamType::Bezier_spline) {
QLocale locale;
if (locale.decimalPoint() != QLocale::c().decimalPoint()) {
return content.replace(QLocale::c().decimalPoint(), locale.decimalPoint());
}
}
}
return content;
......
......@@ -1070,8 +1070,6 @@ const QMap<QString, QString> AnimationWidget::getAnimation()
int pos;
mlt_keyframe_type type;
QString key;
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
QStringList result;
int duration = m_outPoint;
for (int j = 0; j < m_animController.key_count(); ++j) {
......@@ -1092,7 +1090,7 @@ const QMap<QString, QString> AnimationWidget::getAnimation()
key.append(QStringLiteral("="));
break;
}
key.append(locale.toString(val));
key.append(QString::number(val, 'f'));
result << key;
}
animationResults.insert(i.key(), result.join(QLatin1Char(';')));
......
......@@ -44,7 +44,6 @@ CubicBezierSpline &CubicBezierSpline::operator=(const CubicBezierSpline &spline)
void CubicBezierSpline::fromString(const QString &spline)
{
m_points.clear();
QLocale locale;
const QStringList bpoints = spline.split(QLatin1Char('|'));
for (const QString &bpoint : bpoints) {
const QStringList points = bpoint.split(QLatin1Char('#'));
......@@ -52,7 +51,7 @@ void CubicBezierSpline::fromString(const QString &spline)
for (const QString &point : points) {
const QStringList xy = point.split(QLatin1Char(';'));
if (xy.count() == 2) {
values.append(QPointF(locale.toDouble(xy.at(0)), locale.toDouble(xy.at(1))));
values.append(QPointF(xy.at(0).toDouble(), xy.at(1).toDouble()));
}
}
if (values.count() == 3) {
......@@ -71,8 +70,9 @@ QString CubicBezierSpline::toString() const
locale.setNumberOptions(QLocale::OmitGroupSeparator);
for (const BPoint &p : m_points) {
spline << QStringLiteral("%1;%2#%3;%4#%5;%6")
.arg(locale.toString(p.h1.x()), locale.toString(p.h1.y()), locale.toString(p.p.x()), locale.toString(p.p.y()), locale.toString(p.h2.x()),
locale.toString(p.h2.y()));
.arg(QString::number(p.h1.x(), 'f'), QString::number(p.h1.y(), 'f'), QString::number(p.p.x(), 'f'),
QString::number(p.p.y(), 'f'), QString::number(p.h2.x(), 'f'),
QString::number(p.h2.y(), 'f'));
}
return spline.join(QLatin1Char('|'));
}
......
......@@ -32,15 +32,13 @@ DoubleParamWidget::DoubleParamWidget(std::shared_ptr<AssetParameterModel> model,
m_lay = new QVBoxLayout(this);
m_lay->setContentsMargins(0, 0, 0, 0);
m_lay->setSpacing(0);
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
// Retrieve parameters from the model
QString name = m_model->data(m_index, Qt::DisplayRole).toString();
double value = locale.toDouble(m_model->data(m_index, AssetParameterModel::ValueRole).toString());
double value = m_model->data(m_index, AssetParameterModel::ValueRole).toDouble();
double min = m_model->data(m_index, AssetParameterModel::MinRole).toDouble();
double max = m_model->data(m_index, AssetParameterModel::MaxRole).toDouble();
double defaultValue = locale.toDouble(m_model->data(m_index, AssetParameterModel::DefaultRole).toString());
double defaultValue = m_model->data(m_index, AssetParameterModel::DefaultRole).toDouble();
QString comment = m_model->data(m_index, AssetParameterModel::CommentRole).toString();
QString suffix = m_model->data(m_index, AssetParameterModel::SuffixRole).toString();
int decimals = m_model->data(m_index, AssetParameterModel::DecimalsRole).toInt();
......@@ -51,16 +49,14 @@ DoubleParamWidget::DoubleParamWidget(std::shared_ptr<AssetParameterModel> model,
setMinimumHeight(m_doubleWidget->height());
// Connect signal
connect(m_doubleWidget, &DoubleWidget::valueChanged, [this, locale](double val) { emit valueChanged(m_index, locale.toString(val), true); });
connect(m_doubleWidget, &DoubleWidget::valueChanged, [this](double val) { emit valueChanged(m_index, QString::number(val, 'f'), true); });
slotRefresh();
}
void DoubleParamWidget::slotRefresh()
{
QSignalBlocker bk(m_doubleWidget);
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
double value = locale.toDouble(m_model->data(m_index, AssetParameterModel::ValueRole).toString());
double value = m_model->data(m_index, AssetParameterModel::ValueRole).toDouble();
m_doubleWidget->setValue(value);
}
......
......@@ -113,13 +113,11 @@ void KeyframeEdit::addParameter(QModelIndex index, int activeKeyframe)
keyframe_list->blockSignals(true);
// Retrieve parameters from the model
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
QString name = m_model->data(index, Qt::DisplayRole).toString();
double value = 0; // locale.toDouble(m_model->data(index, AssetParameterModel::ValueRole).toString());
double min = m_model->data(index, AssetParameterModel::MinRole).toDouble();
double max = m_model->data(index, AssetParameterModel::MaxRole).toDouble();
double defaultValue = locale.toDouble(m_model->data(index, AssetParameterModel::DefaultRole).toString());
double defaultValue = m_model->data(index, AssetParameterModel::DefaultRole).toDouble();
QString comment = m_model->data(index, AssetParameterModel::CommentRole).toString();
QString suffix = m_model->data(index, AssetParameterModel::SuffixRole).toString();
int decimals = m_model->data(index, AssetParameterModel::DecimalsRole).toInt();
......@@ -131,14 +129,6 @@ void KeyframeEdit::addParameter(QModelIndex index, int activeKeyframe)
DoubleWidget *doubleparam = new DoubleWidget(name, value, min, max, m_model->data(index, AssetParameterModel::FactorRole).toDouble(), defaultValue, comment,
-1, suffix, decimals, m_model->data(index, AssetParameterModel::OddRole).toBool(), this);
/*DoubleParameterWidget *doubleparam = new DoubleParameterWidget(
paramName, 0, m_params.at(columnId).attribute(QStringLiteral("min")).toDouble(), m_params.at(columnId).attribute(QStringLiteral("max")).toDouble(),
m_params.at(columnId).attribute(QStringLiteral("default")).toDouble(), comment, columnId, m_params.at(columnId).attribute(QStringLiteral("suffix")),
m_params.at(columnId).attribute(QStringLiteral("decimals")).toInt(), false, this);*/
// Connect signal
// connect(doubleparam, &DoubleWidget::valueChanged, [this, locale, index](double value) { emit valueChanged(index, locale.toString(value)); });
connect(doubleparam, &DoubleWidget::valueChanged, this, &KeyframeEdit::slotAdjustKeyframeValue);
connect(this, SIGNAL(showComments(bool)), doubleparam, SLOT(slotShowComment(bool)));
// connect(doubleparam, SIGNAL(setInTimeline(int)), this, SLOT(slotUpdateVisibleParameter(int)));
......
......@@ -237,8 +237,7 @@ void KeyframeWidget::slotRefreshParams()
if (vals.count() >= 4) {
rect = QRect(vals.at(0).toInt(), vals.at(1).toInt(), vals.at(2).toInt(), vals.at(3).toInt());
if (vals.count() > 4) {
QLocale locale;
opacity = locale.toDouble(vals.at(4));
opacity = vals.at(4).toDouble();
}
}
((GeometryWidget *)w.second)->setValue(rect, opacity);
......@@ -329,8 +328,6 @@ void KeyframeWidget::resetKeyframes()
void KeyframeWidget::addParameter(const QPersistentModelIndex &index)
{
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
// Retrieve parameters from the model
QString name = m_model->data(index, Qt::DisplayRole).toString();
QString comment = m_model->data(index, AssetParameterModel::CommentRole).toString();
......@@ -351,7 +348,7 @@ void KeyframeWidget::addParameter(const QPersistentModelIndex &index)
if (vals.count() > 3) {
rect = QRect(vals.at(0).toInt(), vals.at(1).toInt(), vals.at(2).toInt(), vals.at(3).toInt());
if (vals.count() > 4) {
opacity = locale.toDouble(vals.at(4));
opacity = vals.at(4).toDouble();
}
}
// qtblend uses an opacity value in the (0-1) range, while older geometry effects use (0-100)
......@@ -385,11 +382,11 @@ void KeyframeWidget::addParameter(const QPersistentModelIndex &index)
}
}
double value = m_keyframes->getInterpolatedValue(getPosition(), index).toDouble();
double min = locale.toDouble(m_model->data(index, AssetParameterModel::MinRole).toString());
double max = locale.toDouble(m_model->data(index, AssetParameterModel::MaxRole).toString());
double min = m_model->data(index, AssetParameterModel::MinRole).toDouble();
double max = m_model->data(index, AssetParameterModel::MaxRole).toDouble();
double defaultValue = m_model->data(index, AssetParameterModel::DefaultRole).toDouble();
int decimals = m_model->data(index, AssetParameterModel::DecimalsRole).toInt();
double factor = locale.toDouble(m_model->data(index, AssetParameterModel::FactorRole).toString());
double factor = m_model->data(index, AssetParameterModel::FactorRole).toDouble();
factor = qFuzzyIsNull(factor) ? 1 : factor;
auto doubleWidget = new DoubleWidget(name, value, min, max, factor, defaultValue, comment, -1, suffix, decimals, m_model->data(index, AssetParameterModel::OddRole).toBool(), this);
connect(doubleWidget, &DoubleWidget::valueChanged,
......
......@@ -34,7 +34,6 @@ LumaLiftGainParam::LumaLiftGainParam(std::shared_ptr<AssetParameterModel> model,
{
m_flowLayout = new FlowLayout(this, 2, 2, 2);
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
m_locale.setNumberOptions(QLocale::OmitGroupSeparator);
m_lift = new ColorWheel(QStringLiteral("lift"), i18n("Lift"), NegQColor(), this);
m_lift->setFactorDefaultZero(LIFT_FACTOR, 0, 0.5);
connect(m_lift, &ColorWheel::colorChange, this, &LumaLiftGainParam::liftChanged);
......@@ -60,19 +59,19 @@ LumaLiftGainParam::LumaLiftGainParam(std::shared_ptr<AssetParameterModel> model,
connect(this, &LumaLiftGainParam::liftChanged, [this, indexes]() {
NegQColor liftColor = m_lift->color();
QList <QModelIndex> ixes{indexes.value(QStringLiteral("lift_r")),indexes.value(QStringLiteral("lift_g")), indexes.value(QStringLiteral("lift_b"))};
QStringList values {m_locale.toString(liftColor.redF()), m_locale.toString(liftColor.greenF()), m_locale.toString(liftColor.blueF())};
QStringList values {QString::number(liftColor.redF(), 'f'), QString::number(liftColor.greenF(), 'f'), QString::number(liftColor.blueF(), 'f')};
emit valuesChanged(ixes, values, true);
});
connect(this, &LumaLiftGainParam::gammaChanged, [this, indexes]() {
NegQColor gammaColor = m_gamma->color();
QList <QModelIndex> ixes{indexes.value(QStringLiteral("gamma_r")),indexes.value(QStringLiteral("gamma_g")), indexes.value(QStringLiteral("gamma_b"))};
QStringList values {m_locale.toString(gammaColor.redF() * GAMMA_FACTOR), m_locale.toString(gammaColor.greenF() * GAMMA_FACTOR), m_locale.toString(gammaColor.blueF() * GAMMA_FACTOR)};
QStringList values {QString::number(gammaColor.redF() * GAMMA_FACTOR, 'f'), QString::number(gammaColor.greenF() * GAMMA_FACTOR, 'f'), QString::number(gammaColor.blueF() * GAMMA_FACTOR, 'f')};
emit valuesChanged(ixes, values, true);
});
connect(this, &LumaLiftGainParam::gainChanged, [this, indexes]() {
NegQColor gainColor = m_gain->color();
QList <QModelIndex> ixes{indexes.value(QStringLiteral("gain_r")),indexes.value(QStringLiteral("gain_g")), indexes.value(QStringLiteral("gain_b"))};
QStringList values {m_locale.toString(gainColor.redF() * GAIN_FACTOR), m_locale.toString(gainColor.greenF() * GAIN_FACTOR), m_locale.toString(gainColor.blueF() * GAIN_FACTOR)};
QStringList values {QString::number(gainColor.redF() * GAIN_FACTOR, 'f'), QString::number(gainColor.greenF() * GAIN_FACTOR, 'f'), QString::number(gainColor.blueF() * GAIN_FACTOR, 'f')};
emit valuesChanged(ixes, values, true);
});
}
......@@ -103,7 +102,7 @@ void LumaLiftGainParam::updateEffect(QDomElement &effect)
}
if (values.contains(pa.attribute(QStringLiteral("name")))) {
pa.setAttribute(QStringLiteral("value"), (int)(values.value(pa.attribute(QStringLiteral("name"))) *
m_locale.toDouble(pa.attribute(QStringLiteral("factor"), QStringLiteral("1")))));
pa.attribute(QStringLiteral("factor"), QStringLiteral("1")).toDouble()));
}
}
}
......@@ -124,7 +123,7 @@ void LumaLiftGainParam::slotRefresh()
for (int i = 0; i < m_model->rowCount(); ++i) {
QModelIndex local_index = m_model->index(i, 0);
QString name = m_model->data(local_index, AssetParameterModel::NameRole).toString();
double val = m_locale.toDouble(m_model->data(local_index, AssetParameterModel::ValueRole).toString());
double val = m_model->data(local_index, AssetParameterModel::ValueRole).toDouble();
values.insert(name, val);
}
m_lift->setColor({values.value(QStringLiteral("lift_r")), values.value(QStringLiteral("lift_g")), values.value(QStringLiteral("lift_b"))});
......
......@@ -46,7 +46,6 @@ public:
void updateEffect(QDomElement &effect);
private:
QLocale m_locale;
ColorWheel *m_lift;
ColorWheel *m_gamma;
ColorWheel *m_gain;
......
......@@ -978,7 +978,8 @@ void ProjectItemModel::loadBinPlaylist(Mlt::Tractor *documentTractor, Mlt::Tract
pCore->loadingMessageUpdated(i18n("Loading project clips..."));
}
// Load bin clips
qDebug() << "init bin";
auto currentLocale = strdup(setlocale(LC_ALL, nullptr));
qDebug() << "Init bin; Current LC_ALL" << currentLocale;
// Load folders
Mlt::Properties folderProperties;
Mlt::Properties playlistProps(playlist.get_properties());
......
......@@ -1739,7 +1739,8 @@ auto DocumentValidator::upgradeTo100(const QLocale &documentLocale) -> QString {
// List of properties which always need to be fixed
QList<QString> generalPropertiesToFix = {"warp_speed", "length"};
// Example: <property name="aspect_ratio">1,00247</property>
QList<QString> generalPropertiesToFix = {"warp_speed", "length", "aspect_ratio"};
// Fix properties just by name, anywhere in the file
auto props = m_doc.elementsByTagName(QStringLiteral("property"));
......@@ -1751,7 +1752,9 @@ auto DocumentValidator::upgradeTo100(const QLocale &documentLocale) -> QString {
QDomText text = element.firstChild().toText();
if (!text.isNull()) {
bool autoReplace = propName.endsWith("frame_rate") || (generalPropertiesToFix.indexOf(propName) >= 0);
bool autoReplace = propName.endsWith("frame_rate")
|| propName.endsWith("aspect_ratio")
|| (generalPropertiesToFix.indexOf(propName) >= 0);
QString originalValue = text.nodeValue();
QString value(originalValue);
......@@ -1827,7 +1830,7 @@ auto DocumentValidator::upgradeTo100(const QLocale &documentLocale) -> QString {
fixTimecode(newValue);
if (oldValue != newValue) {
el.setAttribute(attributeName, newValue);
qDebug() << "Decimal point: Converted" << oldValue << "to" << newValue << "in" << el.nodeName() << attributeName;
qDebug() << "Decimal point: Converted" << el.nodeName() << attributeName << "from" << oldValue << "to" << newValue;
}
}
};
......@@ -1836,9 +1839,6 @@ auto DocumentValidator::upgradeTo100(const QLocale &documentLocale) -> QString {
QList<QString> tagsToFix = {"producer", "filter", "tractor", "entry", "transition", "blank"};
for (const QString &tag : tagsToFix) {
QDomNodeList elements = m_doc.elementsByTagName(tag);
if (tag == "producer") {
qDebug() << "Fixing producers ..";
}
for (int i = 0; i < elements.count(); i++) {
QDomElement el = elements.at(i).toElement();
fixAttribute(el, "in");
......@@ -1848,6 +1848,7 @@ auto DocumentValidator::upgradeTo100(const QLocale &documentLocale) -> QString {
}
modified = true;
qDebug() << "Decimal point: New XML: " << m_doc.toString(-1);
} else {
qDebug() << "Decimal point is OK";
......
......@@ -311,7 +311,6 @@ const QByteArray KdenliveDoc::getAndClearProjectXml()
const QByteArray result = m_document.toString().toUtf8();
// We don't need the xml data anymore, throw away
m_document.clear();
qDebug() << "Project XML: " << result;
return result;
}
......@@ -621,7 +620,6 @@ bool KdenliveDoc::saveSceneList(const QString &path, const QString &scene)
QLocale currentLocale;
qDebug() << "Current locale is " << currentLocale;
QLocale::setDefault(QLocale(QLocale::Russian, QLocale::Russia));
const QByteArray sceneData = sceneList.toString().toUtf8();
QLocale::setDefault(currentLocale);
......
......@@ -413,14 +413,12 @@ void GeometryWidget::setValue(const QRect r, double opacity)
const QString GeometryWidget::getValue() const
{
if (m_opacity) {
QLocale locale;
locale.setNumberOptions(QLocale::OmitGroupSeparator);
return QStringLiteral("%1 %2 %3 %4 %5")
.arg(m_spinX->value())
.arg(m_spinY->value())
.arg(m_spinWidth->value())
.arg(m_spinHeight->value())
.arg(locale.toString(m_opacity->value() / m_opacityFactor));
.arg(QString::number(m_opacity->value() / m_opacityFactor, 'f'));
}
return QStringLiteral("%1 %2 %3 %4").arg(m_spinX->value()).arg(m_spinY->value()).arg(m_spinWidth->value()).arg(m_spinHeight->value());
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment