From 0e24fae91ce87756828db64449631d5a730ef1ec Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 6 Jul 2016 13:34:05 +0300 Subject: [PATCH 01/69] Fixed issue #521. Error: Can't create Seam Allowance after using Union Tool. --HG-- branch : develop --- .../vtools/dialogs/tools/dialogdetail.cpp | 23 +- src/libs/vtools/dialogs/tools/dialogdetail.h | 1 + src/libs/vtools/tools/vtooluniondetails.cpp | 413 +++++++++--------- src/libs/vtools/tools/vtooluniondetails.h | 4 +- 4 files changed, 215 insertions(+), 226 deletions(-) diff --git a/src/libs/vtools/dialogs/tools/dialogdetail.cpp b/src/libs/vtools/dialogs/tools/dialogdetail.cpp index 0cc6bb33c..44d2e2939 100644 --- a/src/libs/vtools/dialogs/tools/dialogdetail.cpp +++ b/src/libs/vtools/dialogs/tools/dialogdetail.cpp @@ -187,6 +187,7 @@ void DialogDetail::NameDetailChanged() void DialogDetail::NewItem(quint32 id, const Tool &typeTool, const NodeDetail &typeNode, qreal mx, qreal my, bool reverse) { + SCASSERT(id > NULL_ID); QString name; switch (typeTool) { @@ -214,8 +215,7 @@ void DialogDetail::NewItem(quint32 id, const Tool &typeTool, const NodeDetail &t } else { - const QString previousItemName = ui.listWidget->item(ui.listWidget->count()-1)->text(); - if(QString::compare(previousItemName, name) != 0) + if(RowId(ui.listWidget->count()-1) != id) { canAddNewPoint = true; } @@ -289,6 +289,15 @@ void DialogDetail::EnableObjectGUI(bool value) } } +//--------------------------------------------------------------------------------------------------------------------- +quint32 DialogDetail::RowId(int i) const +{ + const QListWidgetItem *rowItem = ui.listWidget->item(i); + SCASSERT(rowItem != nullptr); + const VNodeDetail rowNode = qvariant_cast(rowItem->data(Qt::UserRole)); + return rowNode.getId(); +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief setDetails set detail @@ -523,10 +532,7 @@ bool DialogDetail::DetailIsValid() const { for (int i=0, sz = ui.listWidget->count()-1; iitem(i)->text(); - const QString nextRow = ui.listWidget->item(i+1)->text(); - - if (QString::compare(previousRow, nextRow) == 0) + if (RowId(i) == RowId(i+1)) { url += tr("You have double points!"); ui.helpLabel->setText(url); @@ -544,10 +550,7 @@ bool DialogDetail::FirstPointEqualLast() const { if (ui.listWidget->count() > 1) { - const QString firstDetailPoint = ui.listWidget->item(0)->text(); - const QString lastDetailPoint = ui.listWidget->item(ui.listWidget->count()-1)->text(); - - if (QString::compare(firstDetailPoint, lastDetailPoint) == 0) + if (RowId(0) == RowId(ui.listWidget->count()-1)) { return true; } diff --git a/src/libs/vtools/dialogs/tools/dialogdetail.h b/src/libs/vtools/dialogs/tools/dialogdetail.h index 11286af08..d6d31c803 100644 --- a/src/libs/vtools/dialogs/tools/dialogdetail.h +++ b/src/libs/vtools/dialogs/tools/dialogdetail.h @@ -87,6 +87,7 @@ private: VDetail CreateDetail() const; void ValidObjects(bool value); void EnableObjectGUI(bool value); + quint32 RowId(int i) const; }; //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/vtooluniondetails.cpp b/src/libs/vtools/tools/vtooluniondetails.cpp index 6630a8f3f..33a07eef4 100644 --- a/src/libs/vtools/tools/vtooluniondetails.cpp +++ b/src/libs/vtools/tools/vtooluniondetails.cpp @@ -112,165 +112,144 @@ void VToolUnionDetails::AddToNewDetail(VMainGraphicsScene *scene, VAbstractPatte { case (Tool::NodePoint): { - if ( qFuzzyIsNull(dx) && qFuzzyIsNull(dy) && (pRotate == 0)) + VPointF *point = new VPointF(*data->GeometricObject(det.at(i).getId())); + point->setMode(Draw::Modeling); + + if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID) { - id = det.at(i).getId(); - } - else - { - VPointF *point = new VPointF(*data->GeometricObject(det.at(i).getId())); - point->setMode(Draw::Modeling); BiasRotatePoint(point, dx, dy, *data->GeometricObject(pRotate), angle); - idObject = data->AddGObject(point); - children.append(idObject); - VPointF *point1 = new VPointF(*point); - point1->setMode(Draw::Modeling); - id = data->AddGObject(point1); - VNodePoint::Create(doc, data, scene, id, idObject, Document::FullParse, Source::FromGui, drawName, - idTool); } + + idObject = data->AddGObject(point); + children.append(idObject); + VPointF *point1 = new VPointF(*point); + point1->setMode(Draw::Modeling); + id = data->AddGObject(point1); + VNodePoint::Create(doc, data, scene, id, idObject, Document::FullParse, Source::FromGui, drawName, idTool); } break; case (Tool::NodeArc): { - if (qFuzzyIsNull(dx) && qFuzzyIsNull(dy) && pRotate == 0) + const QPointF p = *data->GeometricObject(pRotate); + const QSharedPointer arc = data->GeometricObject(det.at(i).getId()); + VPointF p1 = VPointF(arc->GetP1(), "A", 0, 0); + VPointF p2 = VPointF(arc->GetP2(), "A", 0, 0); + VPointF *center = new VPointF(arc->GetCenter()); + + if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID) { - id = det.at(i).getId(); - } - else - { - const QPointF p = *data->GeometricObject(pRotate); - const QSharedPointer arc = data->GeometricObject(det.at(i).getId()); - VPointF p1 = VPointF(arc->GetP1(), "A", 0, 0); BiasRotatePoint(&p1, dx, dy, p, angle); - VPointF p2 = VPointF(arc->GetP2(), "A", 0, 0); BiasRotatePoint(&p2, dx, dy, p, angle); - VPointF *center = new VPointF(arc->GetCenter()); BiasRotatePoint(center, dx, dy, p, angle); - - QLineF l1(*center, p1); - QLineF l2(*center, p2); - center->setMode(Draw::Modeling); - quint32 idCenter = data->AddGObject(center); - Q_UNUSED(idCenter); - VArc *arc1 = new VArc(*center, arc->GetRadius(), arc->GetFormulaRadius(), - l1.angle(), QString().setNum(l1.angle()), l2.angle(), - QString().setNum(l2.angle())); - arc1->setMode(Draw::Modeling); - idObject = data->AddGObject(arc1); - children.append(idObject); - - VArc *arc2 = new VArc(*arc1); - arc2->setMode(Draw::Modeling); - id = data->AddGObject(arc2); - - VNodeArc::Create(doc, data, id, idObject, Document::FullParse, Source::FromGui, drawName, idTool); } + + QLineF l1(*center, p1); + QLineF l2(*center, p2); + center->setMode(Draw::Modeling); + quint32 idCenter = data->AddGObject(center); + Q_UNUSED(idCenter); + VArc *arc1 = new VArc(*center, arc->GetRadius(), arc->GetFormulaRadius(), l1.angle(), + QString().setNum(l1.angle()), l2.angle(), QString().setNum(l2.angle())); + arc1->setMode(Draw::Modeling); + idObject = data->AddGObject(arc1); + children.append(idObject); + + VArc *arc2 = new VArc(*arc1); + arc2->setMode(Draw::Modeling); + id = data->AddGObject(arc2); + + VNodeArc::Create(doc, data, id, idObject, Document::FullParse, Source::FromGui, drawName, idTool); } break; case (Tool::NodeSpline): { - if (qFuzzyIsNull(dx) && qFuzzyIsNull(dy) && pRotate == 0) - { - id = det.at(i).getId(); - } - else - { - const QSharedPointer spline = - data->GeometricObject(det.at(i).getId()); + const QSharedPointer spline = + data->GeometricObject(det.at(i).getId()); - const QPointF p = *data->GeometricObject(pRotate); - VPointF *p1 = new VPointF(spline->GetP1()); + const QPointF p = *data->GeometricObject(pRotate); + VPointF *p1 = new VPointF(spline->GetP1()); + VPointF p2 = VPointF(spline->GetP2()); + VPointF p3 = VPointF(spline->GetP3()); + VPointF *p4 = new VPointF(spline->GetP4()); + + if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID) + { BiasRotatePoint(p1, dx, dy, p, angle); - - VPointF p2 = VPointF(spline->GetP2()); BiasRotatePoint(&p2, dx, dy, p, angle); - - VPointF p3 = VPointF(spline->GetP3()); BiasRotatePoint(&p3, dx, dy, p, angle); - - VPointF *p4 = new VPointF(spline->GetP4()); BiasRotatePoint(p4, dx, dy, p, angle); - - VSpline *spl = new VSpline(*p1, p2, p3, *p4, 0, Draw::Modeling); - idObject = data->AddGObject(spl); - children.append(idObject); - - VSpline *spl1 = new VSpline(*spl); - spl1->setMode(Draw::Modeling); - id = data->AddGObject(spl1); - VNodeSpline::Create(doc, data, id, idObject, Document::FullParse, Source::FromGui, drawName, idTool); - - delete p4; - delete p1; } + + VSpline *spl = new VSpline(*p1, p2, p3, *p4, 0, Draw::Modeling); + idObject = data->AddGObject(spl); + children.append(idObject); + + VSpline *spl1 = new VSpline(*spl); + spl1->setMode(Draw::Modeling); + id = data->AddGObject(spl1); + VNodeSpline::Create(doc, data, id, idObject, Document::FullParse, Source::FromGui, drawName, idTool); + + delete p4; + delete p1; } break; case (Tool::NodeSplinePath): { - if (qFuzzyIsNull(dx) && qFuzzyIsNull(dy) && pRotate == 0) + VSplinePath *path = new VSplinePath(); + path->setMode(Draw::Modeling); + const QSharedPointer splinePath = + data->GeometricObject(det.at(i).getId()); + for (qint32 i = 1; i <= splinePath->CountSubSpl(); ++i) { - id = det.at(i).getId(); - } - else - { - VSplinePath *path = new VSplinePath(); - path->setMode(Draw::Modeling); - const QSharedPointer splinePath = - data->GeometricObject(det.at(i).getId()); - for (qint32 i = 1; i <= splinePath->CountSubSpl(); ++i) + const VSpline spline = splinePath->GetSpline(i); + + const QPointF p = *data->GeometricObject(pRotate); + VPointF *p1 = new VPointF(spline.GetP1()); + VPointF p2 = VPointF(spline.GetP2()); + VPointF p3 = VPointF(spline.GetP3()); + VPointF *p4 = new VPointF(spline.GetP4()); + if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID) { - const VSpline spline = splinePath->GetSpline(i); - - const QPointF p = *data->GeometricObject(pRotate); - VPointF *p1 = new VPointF(spline.GetP1()); BiasRotatePoint(p1, dx, dy, p, angle); - - VPointF p2 = VPointF(spline.GetP2()); BiasRotatePoint(&p2, dx, dy, p, angle); - - VPointF p3 = VPointF(spline.GetP3()); BiasRotatePoint(&p3, dx, dy, p, angle); - - VPointF *p4 = new VPointF(spline.GetP4()); BiasRotatePoint(p4, dx, dy, p, angle); - - VSpline spl = VSpline(*p1, p2, p3, *p4); - if (i==1) - { - const qreal angle1 = spl.GetStartAngle()+180; - const QString angle1F = QString().number(angle1); - - path->append(VSplinePoint(*p1, angle1, angle1F, spl.GetStartAngle(), spl.GetStartAngleFormula(), - 0, "0", spline.GetC1Length(), spline.GetC1LengthFormula())); - } - - const qreal angle2 = spl.GetEndAngle()+180; - const QString angle2F = QString().number(angle2); - qreal pL2 = 0; - QString pL2F("0"); - if (i+1 <= splinePath->CountSubSpl()) - { - const VSpline nextSpline = splinePath->GetSpline(i+1); - pL2 = nextSpline.GetC1Length(); - pL2F = nextSpline.GetC1LengthFormula(); - } - - path->append(VSplinePoint(*p4, spl.GetEndAngle(), spl.GetEndAngleFormula(), angle2, angle2F, - spline.GetC2Length(), spline.GetC2LengthFormula(), pL2, pL2F)); - - delete p4; - delete p1; } - idObject = data->AddGObject(path); - children.append(idObject); - VSplinePath *path1 = new VSplinePath(*path); - path1->setMode(Draw::Modeling); - id = data->AddGObject(path1); - VNodeSplinePath::Create(doc, data, id, idObject, Document::FullParse, Source::FromGui, drawName, - idTool); + VSpline spl = VSpline(*p1, p2, p3, *p4); + if (i==1) + { + const qreal angle1 = spl.GetStartAngle()+180; + const QString angle1F = QString().number(angle1); + + path->append(VSplinePoint(*p1, angle1, angle1F, spl.GetStartAngle(), spl.GetStartAngleFormula(), + 0, "0", spline.GetC1Length(), spline.GetC1LengthFormula())); + } + + const qreal angle2 = spl.GetEndAngle()+180; + const QString angle2F = QString().number(angle2); + qreal pL2 = 0; + QString pL2F("0"); + if (i+1 <= splinePath->CountSubSpl()) + { + const VSpline nextSpline = splinePath->GetSpline(i+1); + pL2 = nextSpline.GetC1Length(); + pL2F = nextSpline.GetC1LengthFormula(); + } + + path->append(VSplinePoint(*p4, spl.GetEndAngle(), spl.GetEndAngleFormula(), angle2, angle2F, + spline.GetC2Length(), spline.GetC2LengthFormula(), pL2, pL2F)); + + delete p4; + delete p1; } + idObject = data->AddGObject(path); + children.append(idObject); + + VSplinePath *path1 = new VSplinePath(*path); + path1->setMode(Draw::Modeling); + id = data->AddGObject(path1); + VNodeSplinePath::Create(doc, data, id, idObject, Document::FullParse, Source::FromGui, drawName, idTool); } break; default: @@ -301,124 +280,119 @@ void VToolUnionDetails::UpdatePoints(VContainer *data, const VDetail &det, const { case (Tool::NodePoint): { - if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != 0) + VPointF *point = new VPointF(*data->GeometricObject(det.at(i).getId())); + point->setMode(Draw::Modeling); + if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID) { - VPointF *point = new VPointF(*data->GeometricObject(det.at(i).getId())); - point->setMode(Draw::Modeling); BiasRotatePoint(point, dx, dy, *data->GeometricObject(pRotate), angle); - data->UpdateGObject(TakeNextId(children), point); } + data->UpdateGObject(TakeNextId(children), point); } break; case (Tool::NodeArc): { - if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != 0) + const QPointF p = *data->GeometricObject(pRotate); + const QSharedPointer arc = data->GeometricObject(det.at(i).getId()); + VPointF p1 = VPointF(arc->GetP1()); + VPointF p2 = VPointF(arc->GetP2()); + VPointF *center = new VPointF(arc->GetCenter()); + + if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID) { - const QPointF p = *data->GeometricObject(pRotate); - const QSharedPointer arc = data->GeometricObject(det.at(i).getId()); - VPointF p1 = VPointF(arc->GetP1()); BiasRotatePoint(&p1, dx, dy, p, angle); - - VPointF p2 = VPointF(arc->GetP2()); BiasRotatePoint(&p2, dx, dy, p, angle); - - VPointF *center = new VPointF(arc->GetCenter()); BiasRotatePoint(center, dx, dy, p, angle); - - QLineF l1(*center, p1); - QLineF l2(*center, p2); - - VArc *arc1 = new VArc(*center, arc->GetRadius(), arc->GetFormulaRadius(), l1.angle(), - QString().setNum(l1.angle()), l2.angle(), QString().setNum(l2.angle())); - arc1->setMode(Draw::Modeling); - data->UpdateGObject(TakeNextId(children), arc1); - delete center; } + + QLineF l1(*center, p1); + QLineF l2(*center, p2); + + VArc *arc1 = new VArc(*center, arc->GetRadius(), arc->GetFormulaRadius(), l1.angle(), + QString().setNum(l1.angle()), l2.angle(), QString().setNum(l2.angle())); + arc1->setMode(Draw::Modeling); + data->UpdateGObject(TakeNextId(children), arc1); + delete center; } break; case (Tool::NodeSpline): { - if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != 0) + const QSharedPointer spline = + data->GeometricObject(det.at(i).getId()); + + const QPointF p = *data->GeometricObject(pRotate); + VPointF *p1 = new VPointF(spline->GetP1()); + VPointF p2 = VPointF(spline->GetP2()); + VPointF p3 = VPointF(spline->GetP3()); + VPointF *p4 = new VPointF(spline->GetP4()); + + if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID) { - const QSharedPointer spline = - data->GeometricObject(det.at(i).getId()); - - const QPointF p = *data->GeometricObject(pRotate); - VPointF *p1 = new VPointF(spline->GetP1()); BiasRotatePoint(p1, dx, dy, p, angle); - - VPointF p2 = VPointF(spline->GetP2()); BiasRotatePoint(&p2, dx, dy, p, angle); - - VPointF p3 = VPointF(spline->GetP3()); BiasRotatePoint(&p3, dx, dy, p, angle); - - VPointF *p4 = new VPointF(spline->GetP4()); BiasRotatePoint(p4, dx, dy, p, angle); - - VSpline *spl = new VSpline(*p1, p2, p3, *p4, 0, Draw::Modeling); - data->UpdateGObject(TakeNextId(children), spl); - delete p1; - delete p4; } + + VSpline *spl = new VSpline(*p1, p2, p3, *p4, 0, Draw::Modeling); + data->UpdateGObject(TakeNextId(children), spl); + delete p1; + delete p4; } break; case (Tool::NodeSplinePath): { - if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != 0) + VSplinePath *path = new VSplinePath(); + path->setMode(Draw::Modeling); + const QSharedPointer splinePath = + data->GeometricObject(det.at(i).getId()); + SCASSERT(splinePath != nullptr); + for (qint32 i = 1; i <= splinePath->CountSubSpl(); ++i) { - VSplinePath *path = new VSplinePath(); - path->setMode(Draw::Modeling); - const QSharedPointer splinePath = - data->GeometricObject(det.at(i).getId()); - SCASSERT(splinePath != nullptr); - for (qint32 i = 1; i <= splinePath->CountSubSpl(); ++i) + const VSpline spline = splinePath->GetSpline(i); + + const QPointF p = *data->GeometricObject(pRotate); + VPointF *p1 = new VPointF(spline.GetP1()); + VPointF p2 = VPointF(spline.GetP2()); + VPointF p3 = VPointF(spline.GetP3()); + VPointF *p4 = new VPointF(spline.GetP4()); + + if (not qFuzzyIsNull(dx) || not qFuzzyIsNull(dy) || pRotate != NULL_ID) { - const VSpline spline = splinePath->GetSpline(i); - - const QPointF p = *data->GeometricObject(pRotate); - VPointF *p1 = new VPointF(spline.GetP1()); BiasRotatePoint(p1, dx, dy, p, angle); - - VPointF p2 = VPointF(spline.GetP2()); BiasRotatePoint(&p2, dx, dy, p, angle); - - VPointF p3 = VPointF(spline.GetP3()); BiasRotatePoint(&p3, dx, dy, p, angle); - - VPointF *p4 = new VPointF(spline.GetP4()); BiasRotatePoint(p4, dx, dy, p, angle); - - VSpline spl = VSpline(*p1, p2, p3, *p4); - if (i==1) - { - const qreal angle1 = spl.GetStartAngle()+180; - const QString angle1F = QString().number(angle1); - - path->append(VSplinePoint(*p1, angle1, angle1F, spl.GetStartAngle(), spl.GetStartAngleFormula(), - 0, "0", spline.GetC1Length(), spline.GetC1LengthFormula())); - } - - const qreal angle2 = spl.GetEndAngle()+180; - const QString angle2F = QString().number(angle2); - - qreal pL2 = 0; - QString pL2F("0"); - if (i+1 <= splinePath->CountSubSpl()) - { - const VSpline nextSpline = splinePath->GetSpline(i+1); - pL2 = nextSpline.GetC1Length(); - pL2F = nextSpline.GetC1LengthFormula(); - } - - path->append(VSplinePoint(*p4, spl.GetEndAngle(), spl.GetEndAngleFormula(), angle2, angle2F, - spline.GetC2Length(), spline.GetC2LengthFormula(), pL2, pL2F)); - - delete p1; - delete p4; } - data->UpdateGObject(TakeNextId(children), path); + + VSpline spl = VSpline(*p1, p2, p3, *p4); + if (i==1) + { + const qreal angle1 = spl.GetStartAngle()+180; + const QString angle1F = QString().number(angle1); + + path->append(VSplinePoint(*p1, angle1, angle1F, spl.GetStartAngle(), spl.GetStartAngleFormula(), + 0, "0", spline.GetC1Length(), spline.GetC1LengthFormula())); + } + + const qreal angle2 = spl.GetEndAngle()+180; + const QString angle2F = QString().number(angle2); + + qreal pL2 = 0; + QString pL2F("0"); + if (i+1 <= splinePath->CountSubSpl()) + { + const VSpline nextSpline = splinePath->GetSpline(i+1); + pL2 = nextSpline.GetC1Length(); + pL2F = nextSpline.GetC1LengthFormula(); + } + + path->append(VSplinePoint(*p4, spl.GetEndAngle(), spl.GetEndAngleFormula(), angle2, angle2F, + spline.GetC2Length(), spline.GetC2LengthFormula(), pL2, pL2F)); + + delete p1; + delete p4; } + data->UpdateGObject(TakeNextId(children), path); } break; default: @@ -671,11 +645,17 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d qint32 i = 0; do { - //UpdatePoints(data, d1.RemoveEdge(indexD1), i, children); - ++i; - if (i > d1.indexOfNode(det1p1.getId())) + // This check need for backward compatibility + // Remove it if min version is 0.3.2 + // Instead: + // UpdatePoints(data, d1.RemoveEdge(indexD1), i, children); + if (children.size() != countNodeD2) + { + UpdatePoints(data, d1.RemoveEdge(indexD1), i, children); + } + ++i; + if (i > d1.indexOfNode(det1p1.getId()) && pointsD2 < countNodeD2-1) { - const int childrenCount = children.size(); VDetail d2REdge = d2.RemoveEdge(indexD2); qint32 j = 0; FindIndexJ(pointsD2, d2, indexD2, j); @@ -688,8 +668,13 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d UpdatePoints(data, d2REdge, j, children, dx, dy, det1p1.getId(), angle); ++pointsD2; ++j; - } while (pointsD2 < childrenCount); - break; + } while (pointsD2 < countNodeD2-1); + // This check need for backward compatibility + // Remove it if min version is 0.3.2 + if (children.size() == countNodeD2) + { + break; + } } } while (i &children, const QString &drawName, const qreal &dx = 0, - const qreal &dy = 0, const quint32 &pRotate = 0, const qreal &angle = 0); + const qreal &dy = 0, const quint32 &pRotate = NULL_ID, const qreal &angle = 0); static void UpdatePoints(VContainer *data, const VDetail &det, const int &i, QVector &children, const qreal &dx = 0, const qreal &dy = 0, - const quint32 &pRotate = 0, const qreal &angle = 0); + const quint32 &pRotate = NULL_ID, const qreal &angle = 0); static void BiasRotatePoint(VPointF *point, const qreal &dx, const qreal &dy, const QPointF &pRotate, const qreal &angle); virtual QString getTagName() const Q_DECL_OVERRIDE; From 15e840f49a6beeeac67d02b90490956ecce5ab21 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 6 Jul 2016 13:34:39 +0300 Subject: [PATCH 02/69] Small refactoring VToolDetail class. --HG-- branch : develop --- src/libs/vtools/tools/vtooldetail.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/libs/vtools/tools/vtooldetail.cpp b/src/libs/vtools/tools/vtooldetail.cpp index 0c918a14b..24bfa9db7 100644 --- a/src/libs/vtools/tools/vtooldetail.cpp +++ b/src/libs/vtools/tools/vtooldetail.cpp @@ -140,8 +140,7 @@ void VToolDetail::setDialog() SCASSERT(dialog != nullptr); DialogDetail *dialogTool = qobject_cast(dialog); SCASSERT(dialogTool != nullptr); - VDetail detail = VAbstractTool::data.GetDetail(id); - dialogTool->setDetail(detail); + dialogTool->setDetail(VAbstractTool::data.GetDetail(id)); } //--------------------------------------------------------------------------------------------------------------------- @@ -298,8 +297,8 @@ void VToolDetail::FullUpdateFromGuiOk(int result) SCASSERT(dialog != nullptr); DialogDetail *dialogTool = qobject_cast(dialog); SCASSERT(dialogTool != nullptr); - VDetail newDet = dialogTool->getDetail(); - VDetail oldDet = VAbstractTool::data.GetDetail(id); + const VDetail newDet = dialogTool->getDetail(); + const VDetail oldDet = VAbstractTool::data.GetDetail(id); SaveDetailOptions *saveCommand = new SaveDetailOptions(oldDet, newDet, doc, id, this->scene()); connect(saveCommand, &SaveDetailOptions::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); @@ -315,7 +314,7 @@ void VToolDetail::FullUpdateFromGuiOk(int result) */ void VToolDetail::AddToFile() { - VDetail detail = VAbstractTool::data.GetDetail(id); + const VDetail detail = VAbstractTool::data.GetDetail(id); QDomElement domElement = doc->createElement(getTagName()); doc->SetAttribute(domElement, VDomDocument::AttrId, id); From c97fa6a1e812ada77fd9d6dfaf7242a3f226c495 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 6 Jul 2016 15:28:36 +0300 Subject: [PATCH 03/69] We don't need anymore button Stop Tool. Arrow Tool does this function. --HG-- branch : develop --- src/app/valentina/mainwindow.cpp | 3 --- src/app/valentina/mainwindow.ui | 23 ----------------------- 2 files changed, 26 deletions(-) diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 3de1c204c..a893e137b 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -1849,7 +1849,6 @@ void MainWindow::CancelTool() pointer->setChecked(false); } helpLabel->setText(""); - ui->actionStopTool->setEnabled(true); // Crash: using CRTL+Z while using line tool. // related bug report: @@ -1998,7 +1997,6 @@ void MainWindow::ArrowTool() { pointer->setChecked(true); } - ui->actionStopTool->setEnabled(false); currentTool = Tool::Arrow; emit EnableItemMove(true); emit ItemsSelection(SelectionType::ByMouseRelease); @@ -3691,7 +3689,6 @@ void MainWindow::CreateActions() { ui->setupUi(this); - connect(ui->actionStopTool, &QAction::triggered, this, &MainWindow::ArrowTool); connect(ui->actionArrowTool, &QAction::triggered, this, &MainWindow::ArrowTool); connect(ui->actionDraw, &QAction::triggered, this, &MainWindow::ActionDraw); connect(ui->actionDetails, &QAction::triggered, this, &MainWindow::ActionDetails); diff --git a/src/app/valentina/mainwindow.ui b/src/app/valentina/mainwindow.ui index 0bad623ad..60db7044b 100644 --- a/src/app/valentina/mainwindow.ui +++ b/src/app/valentina/mainwindow.ui @@ -1560,7 +1560,6 @@ - @@ -2091,28 +2090,6 @@ QAction::NoRole - - - false - - - false - - - - - - - - Stop - - - Stop using tool - - - - - Report Bug... From f0a84471b331147bad2b85ffcf852ffb298b7641 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 6 Jul 2016 15:39:16 +0300 Subject: [PATCH 04/69] Toolbar is only for frequently used features. "Config pattern piece" is not one of them. --HG-- branch : develop --- src/app/valentina/mainwindow.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index a893e137b..b3368ce36 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -1703,7 +1703,6 @@ void MainWindow::ToolBarDraws() connect(comboBoxDraws, static_cast(&QComboBox::currentIndexChanged), this, &MainWindow::currentPPChanged); - ui->toolBarDraws->addAction(ui->actionOptionDraw); connect(ui->actionOptionDraw, &QAction::triggered, this, &MainWindow::DrawOption); } From ed0d4df88f1206ad10335aad1c01ea487d4fc594 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 14:35:55 +0300 Subject: [PATCH 05/69] Fixed wrong color segment that connects label with point in Base point tool. --HG-- branch : develop --- .../toolpoint/tooldoublepoint/vtooldoublepoint.cpp | 2 +- .../toolpoint/toolsinglepoint/vtoolsinglepoint.cpp | 4 ++-- src/libs/vtools/tools/drawTools/toolpoint/vabstractpoint.h | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp index 830fa8982..5ef6e7e6d 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/tooldoublepoint/vtooldoublepoint.cpp @@ -89,7 +89,7 @@ void VToolDoublePoint::setNameP2(const QString &name) //--------------------------------------------------------------------------------------------------------------------- void VToolDoublePoint::SetEnabled(bool enabled) { - SetToolEnabled(this, enabled); + SetToolEnabled(this, baseColor, enabled); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index 6a880c460..3778ffffe 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -94,8 +94,8 @@ void VToolSinglePoint::setName(const QString &name) //--------------------------------------------------------------------------------------------------------------------- void VToolSinglePoint::SetEnabled(bool enabled) { - SetToolEnabled(this, enabled); - SetToolEnabled(lineName, enabled); + SetToolEnabled(this, baseColor, enabled); + SetToolEnabled(lineName, Qt::black, enabled); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/toolpoint/vabstractpoint.h b/src/libs/vtools/tools/drawTools/toolpoint/vabstractpoint.h index ecb7e5c64..c818f6c66 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/vabstractpoint.h +++ b/src/libs/vtools/tools/drawTools/toolpoint/vabstractpoint.h @@ -60,7 +60,7 @@ protected: virtual void RefreshLine(quint32 id)=0; template - void SetToolEnabled(T *item, bool enabled); + void SetToolEnabled(T *item, const QColor &color, bool enabled); template static void InitToolConnections(VMainGraphicsScene *scene, T *tool); @@ -97,12 +97,12 @@ void VAbstractPoint::ShowToolVisualization(bool show) //--------------------------------------------------------------------------------------------------------------------- template -void VAbstractPoint::SetToolEnabled(T *item, bool enabled) +void VAbstractPoint::SetToolEnabled(T *item, const QColor &color, bool enabled) { item->setEnabled(enabled); if (enabled) { - item->setPen(QPen(QColor(baseColor), + item->setPen(QPen(color, qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); } else From c0bae287beff85854307bcd31802fcea0febc02b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 14:36:11 +0300 Subject: [PATCH 06/69] Refactoring. --HG-- branch : develop --- .../drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp index 238703690..7e1c32dab 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp @@ -379,8 +379,7 @@ void VToolBasePoint::contextMenuEvent ( QGraphicsSceneContextMenuEvent * event ) */ void VToolBasePoint::FullUpdateFromFile() { - VPointF point = *VAbstractTool::data.GeometricObject(id); - RefreshPointGeometry(point); + RefreshPointGeometry(*VAbstractTool::data.GeometricObject(id)); } //--------------------------------------------------------------------------------------------------------------------- From 628fdd4217a43ed0e8c8013311ffaa358cb62dce Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 14:55:01 +0300 Subject: [PATCH 07/69] Call Lite Parse each time when add object inside of file. --HG-- branch : develop --- src/app/valentina/dialogs/dialoghistory.cpp | 27 +++++++++++-- src/app/valentina/dialogs/dialoghistory.h | 1 + src/app/valentina/mainwindow.cpp | 42 ++++++++++++--------- src/app/valentina/mainwindow.h | 6 +-- src/libs/vtools/undocommands/addtocalc.cpp | 6 --- 5 files changed, 53 insertions(+), 29 deletions(-) diff --git a/src/app/valentina/dialogs/dialoghistory.cpp b/src/app/valentina/dialogs/dialoghistory.cpp index 45dff4255..239b150ad 100644 --- a/src/app/valentina/dialogs/dialoghistory.cpp +++ b/src/app/valentina/dialogs/dialoghistory.cpp @@ -99,9 +99,9 @@ void DialogHistory::cellClicked(int row, int column) item = ui->tableWidget->item(row, 0); cursorRow = row; item->setIcon(QIcon("://icon/32x32/put_after.png")); - quint32 id = qvariant_cast(item->data(Qt::UserRole)); + const quint32 id = qvariant_cast(item->data(Qt::UserRole)); doc->blockSignals(true); - doc->setCursor(id); + row == ui->tableWidget->rowCount()-1 ? doc->setCursor(0) : doc->setCursor(id); doc->blockSignals(false); } else @@ -185,7 +185,7 @@ void DialogHistory::FillTable() ui->tableWidget->setRowCount(count);//Real row count if (count>0) { - cursorRow = currentRow; + cursorRow = CursorRow(); QTableWidgetItem *item = ui->tableWidget->item(cursorRow, 0); SCASSERT(item != nullptr); item->setIcon(QIcon("://icon/32x32/put_after.png")); @@ -492,3 +492,24 @@ void DialogHistory::RetranslateUi() cursorRow = currentRow; cellClicked(cursorRow, 0); } + +//--------------------------------------------------------------------------------------------------------------------- +int DialogHistory::CursorRow() const +{ + const quint32 cursor = doc->getCursor(); + if (cursor == 0) + { + return ui->tableWidget->rowCount()-1; + } + + for (int i = 0; i < ui->tableWidget->rowCount(); ++i) + { + QTableWidgetItem *item = ui->tableWidget->item(i, 0); + const quint32 id = qvariant_cast(item->data(Qt::UserRole)); + if (cursor == id) + { + return i; + } + } + return ui->tableWidget->rowCount()-1; +} diff --git a/src/app/valentina/dialogs/dialoghistory.h b/src/app/valentina/dialogs/dialoghistory.h index e306f8ebf..fbe5bba14 100644 --- a/src/app/valentina/dialogs/dialoghistory.h +++ b/src/app/valentina/dialogs/dialoghistory.h @@ -91,6 +91,7 @@ private: QString PointName(quint32 pointId); quint32 AttrUInt(const QDomElement &domElement, const QString &name); void RetranslateUi(); + int CursorRow() const; }; #endif // DIALOGHISTORY_H diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index b3368ce36..ff76c450a 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -570,10 +570,10 @@ void MainWindow::SetToolButton(bool checked, Tool t, const QString &cursor, cons VMainGraphicsScene *scene = qobject_cast(currentScene); SCASSERT(scene != nullptr); - connect(scene, &VMainGraphicsScene::ChoosedObject, dialogTool, &DialogTool::ChosenObject); - connect(scene, &VMainGraphicsScene::SelectedObject, dialogTool, &DialogTool::SelectedObject); - connect(dialogTool, &DialogTool::DialogClosed, this, closeDialogSlot); - connect(dialogTool, &DialogTool::ToolTip, this, &MainWindow::ShowToolTip); + connect(scene, &VMainGraphicsScene::ChoosedObject, dialogTool.data(), &DialogTool::ChosenObject); + connect(scene, &VMainGraphicsScene::SelectedObject, dialogTool.data(), &DialogTool::SelectedObject); + connect(dialogTool.data(), &DialogTool::DialogClosed, this, closeDialogSlot); + connect(dialogTool.data(), &DialogTool::ToolTip, this, &MainWindow::ShowToolTip); ui->view->itemClicked(nullptr); } else @@ -629,11 +629,11 @@ void MainWindow::SetToolButtonWithApply(bool checked, Tool t, const QString &cur VMainGraphicsScene *scene = qobject_cast(currentScene); SCASSERT(scene != nullptr); - connect(scene, &VMainGraphicsScene::ChoosedObject, dialogTool, &DialogTool::ChosenObject); - connect(scene, &VMainGraphicsScene::SelectedObject, dialogTool, &DialogTool::SelectedObject); - connect(dialogTool, &DialogTool::DialogClosed, this, closeDialogSlot); - connect(dialogTool, &DialogTool::DialogApplied, this, applyDialogSlot); - connect(dialogTool, &DialogTool::ToolTip, this, &MainWindow::ShowToolTip); + connect(scene, &VMainGraphicsScene::ChoosedObject, dialogTool.data(), &DialogTool::ChosenObject); + connect(scene, &VMainGraphicsScene::SelectedObject, dialogTool.data(), &DialogTool::SelectedObject); + connect(dialogTool.data(), &DialogTool::DialogClosed, this, closeDialogSlot); + connect(dialogTool.data(), &DialogTool::DialogApplied, this, applyDialogSlot); + connect(dialogTool.data(), &DialogTool::ToolTip, this, &MainWindow::ShowToolTip); connect(ui->view, &VMainGraphicsView::MouseRelease, this, &MainWindow::ClickEndVisualization); ui->view->itemClicked(nullptr); } @@ -653,7 +653,7 @@ void MainWindow::SetToolButtonWithApply(bool checked, Tool t, const QString &cur template void MainWindow::ClosedDialog(int result) { - SCASSERT(dialogTool != nullptr); + SCASSERT(not dialogTool.isNull()); if (result == QDialog::Accepted) { VMainGraphicsScene *scene = qobject_cast(currentScene); @@ -673,7 +673,7 @@ void MainWindow::ClosedDialog(int result) template void MainWindow::ClosedDialogWithApply(int result) { - SCASSERT(dialogTool != nullptr); + SCASSERT(not dialogTool.isNull()); if (result == QDialog::Accepted) { // Only create tool if not already created with apply @@ -691,7 +691,7 @@ void MainWindow::ClosedDialogWithApply(int result) vtool->FullUpdateFromGuiApply(); } } - SCASSERT(dialogTool != nullptr); + SCASSERT(not dialogTool.isNull()); QGraphicsItem *tool = dynamic_cast(dialogTool->GetAssociatedTool()); ui->view->itemClicked(tool); if (dialogTool->GetAssociatedTool() != nullptr) @@ -700,6 +700,15 @@ void MainWindow::ClosedDialogWithApply(int result) vtool->DialogLinkDestroy(); } ArrowTool(); + // If insert not to the end of file call lite parse + if (doc->getCursor() > 0) + { + doc->LiteParseTree(Document::LiteParse); + if (dialogHistory) + { + dialogHistory->UpdateHistory(); + } + } } //--------------------------------------------------------------------------------------------------------------------- @@ -709,7 +718,7 @@ void MainWindow::ClosedDialogWithApply(int result) template void MainWindow::ApplyDialog() { - SCASSERT(dialogTool != nullptr); + SCASSERT(not dialogTool.isNull()); // Only create tool if not already created with apply if (dialogTool->GetAssociatedTool() == nullptr) @@ -1834,7 +1843,6 @@ void MainWindow::CancelTool() qCDebug(vMainWindow, "Canceling tool."); delete dialogTool; - dialogTool = nullptr; qCDebug(vMainWindow, "Dialog closed."); currentScene->setFocus(Qt::OtherFocusReason); @@ -3090,8 +3098,8 @@ void MainWindow::ActionHistory(bool checked) { dialogHistory = new DialogHistory(pattern, doc, this); dialogHistory->setWindowFlags(Qt::Window); - connect(this, &MainWindow::RefreshHistory, dialogHistory, &DialogHistory::UpdateHistory); - connect(dialogHistory, &DialogHistory::DialogClosed, this, &MainWindow::ClosedActionHistory); + connect(this, &MainWindow::RefreshHistory, dialogHistory.data(), &DialogHistory::UpdateHistory); + connect(dialogHistory.data(), &DialogHistory::DialogClosed, this, &MainWindow::ClosedActionHistory); dialogHistory->show(); } else @@ -4254,7 +4262,7 @@ void MainWindow::ChangePP(int index, bool zoomBestFit) //--------------------------------------------------------------------------------------------------------------------- void MainWindow::EndVisualization(bool click) { - if (dialogTool != nullptr) + if (not dialogTool.isNull()) { dialogTool->ShowDialog(click); } diff --git a/src/app/valentina/mainwindow.h b/src/app/valentina/mainwindow.h index 88d59c8de..10d5d5a4c 100644 --- a/src/app/valentina/mainwindow.h +++ b/src/app/valentina/mainwindow.h @@ -242,9 +242,9 @@ private: bool patternReadOnly; - DialogIncrements *dialogTable; - DialogTool *dialogTool; - DialogHistory *dialogHistory; + DialogIncrements *dialogTable; + QPointer dialogTool; + QPointer dialogHistory; /** @brief comboBoxDraws comboc who show name of pattern peaces. */ QComboBox *comboBoxDraws; diff --git a/src/libs/vtools/undocommands/addtocalc.cpp b/src/libs/vtools/undocommands/addtocalc.cpp index 04d3aa966..4e5ab15a5 100644 --- a/src/libs/vtools/undocommands/addtocalc.cpp +++ b/src/libs/vtools/undocommands/addtocalc.cpp @@ -49,7 +49,6 @@ void AddToCalc::undo() qCDebug(vUndo, "Undo."); doc->ChangeActivPP(nameActivDraw);//Without this user will not see this change - doc->setCursor(cursor); QDomElement calcElement; if (doc->GetActivNodeElement(VAbstractPattern::TagCalculation, calcElement)) @@ -74,10 +73,6 @@ void AddToCalc::undo() qCDebug(vUndo, "Can't find tag Calculation."); return; } - if (cursor > 0) - { - doc->setCursor(0); - } emit NeedFullParsing(); VMainGraphicsView::NewSceneRect(qApp->getCurrentScene(), qApp->getSceneView()); doc->SetCurrentPP(nameActivDraw);//Return current pattern piece after undo @@ -104,7 +99,6 @@ void AddToCalc::redo() if (refElement.isElement()) { calcElement.insertAfter(xml, refElement); - doc->setCursor(0); } else { From bd7f328a8a9081470cb437a426477a57efe016a0 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 14:56:55 +0300 Subject: [PATCH 08/69] Refactoring deleting visualization object. Instead of searcing inside current graphics scene use QPointer class. --HG-- branch : develop --- .../vtools/dialogs/tools/dialogalongline.cpp | 1 - src/libs/vtools/dialogs/tools/dialogarc.cpp | 1 - .../dialogs/tools/dialogarcwithlength.cpp | 1 - .../vtools/dialogs/tools/dialogbisector.cpp | 1 - .../vtools/dialogs/tools/dialogcubicbezier.cpp | 1 - .../dialogs/tools/dialogcubicbezierpath.cpp | 1 - .../dialogs/tools/dialogcurveintersectaxis.cpp | 1 - src/libs/vtools/dialogs/tools/dialogcutarc.cpp | 1 - .../vtools/dialogs/tools/dialogcutspline.cpp | 1 - .../dialogs/tools/dialogcutsplinepath.cpp | 1 - .../vtools/dialogs/tools/dialogendline.cpp | 3 +-- src/libs/vtools/dialogs/tools/dialogheight.cpp | 1 - src/libs/vtools/dialogs/tools/dialogline.cpp | 1 - .../dialogs/tools/dialoglineintersect.cpp | 1 - .../dialogs/tools/dialoglineintersectaxis.cpp | 1 - src/libs/vtools/dialogs/tools/dialognormal.cpp | 1 - .../tools/dialogpointfromarcandtangent.cpp | 1 - .../tools/dialogpointfromcircleandtangent.cpp | 1 - .../dialogs/tools/dialogpointofcontact.cpp | 1 - .../tools/dialogpointofintersection.cpp | 1 - .../tools/dialogpointofintersectionarcs.cpp | 1 - .../tools/dialogpointofintersectioncircles.cpp | 1 - .../tools/dialogpointofintersectioncurves.cpp | 1 - .../vtools/dialogs/tools/dialogrotation.cpp | 1 - .../dialogs/tools/dialogshoulderpoint.cpp | 1 - src/libs/vtools/dialogs/tools/dialogspline.cpp | 1 - .../vtools/dialogs/tools/dialogsplinepath.cpp | 1 - src/libs/vtools/dialogs/tools/dialogtool.cpp | 5 +++++ src/libs/vtools/dialogs/tools/dialogtool.h | 18 +----------------- .../vtools/dialogs/tools/dialogtriangle.cpp | 1 - .../vtools/dialogs/tools/dialogtruedarts.cpp | 1 - 31 files changed, 7 insertions(+), 47 deletions(-) diff --git a/src/libs/vtools/dialogs/tools/dialogalongline.cpp b/src/libs/vtools/dialogs/tools/dialogalongline.cpp index f9ddcb36d..117e03e1a 100644 --- a/src/libs/vtools/dialogs/tools/dialogalongline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogalongline.cpp @@ -142,7 +142,6 @@ DialogAlongLine::~DialogAlongLine() VContainer *locData = const_cast (data); locData->RemoveVariable(currentLength); - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogarc.cpp b/src/libs/vtools/dialogs/tools/dialogarc.cpp index 28b4e8e5a..38e592113 100644 --- a/src/libs/vtools/dialogs/tools/dialogarc.cpp +++ b/src/libs/vtools/dialogs/tools/dialogarc.cpp @@ -113,7 +113,6 @@ void DialogArc::DeployF2TextEdit() //--------------------------------------------------------------------------------------------------------------------- DialogArc::~DialogArc() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp b/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp index 294aef428..46dae81de 100644 --- a/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp +++ b/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp @@ -90,7 +90,6 @@ DialogArcWithLength::DialogArcWithLength(const VContainer *data, const quint32 & //--------------------------------------------------------------------------------------------------------------------- DialogArcWithLength::~DialogArcWithLength() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogbisector.cpp b/src/libs/vtools/dialogs/tools/dialogbisector.cpp index 88b8313f0..d8e7d08ac 100644 --- a/src/libs/vtools/dialogs/tools/dialogbisector.cpp +++ b/src/libs/vtools/dialogs/tools/dialogbisector.cpp @@ -142,7 +142,6 @@ void DialogBisector::DeployFormulaTextEdit() //--------------------------------------------------------------------------------------------------------------------- DialogBisector::~DialogBisector() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezier.cpp b/src/libs/vtools/dialogs/tools/dialogcubicbezier.cpp index c33761b7e..0f4103100 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezier.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezier.cpp @@ -63,7 +63,6 @@ DialogCubicBezier::DialogCubicBezier(const VContainer *data, const quint32 &tool //--------------------------------------------------------------------------------------------------------------------- DialogCubicBezier::~DialogCubicBezier() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp index a53098c78..ef7e22793 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp @@ -61,7 +61,6 @@ DialogCubicBezierPath::DialogCubicBezierPath(const VContainer *data, const quint //--------------------------------------------------------------------------------------------------------------------- DialogCubicBezierPath::~DialogCubicBezierPath() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp index 52ab4aa38..b645fa884 100644 --- a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp @@ -77,7 +77,6 @@ DialogCurveIntersectAxis::DialogCurveIntersectAxis(const VContainer *data, const //--------------------------------------------------------------------------------------------------------------------- DialogCurveIntersectAxis::~DialogCurveIntersectAxis() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogcutarc.cpp b/src/libs/vtools/dialogs/tools/dialogcutarc.cpp index c247013aa..531e3da96 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutarc.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcutarc.cpp @@ -106,7 +106,6 @@ void DialogCutArc::DeployFormulaTextEdit() //--------------------------------------------------------------------------------------------------------------------- DialogCutArc::~DialogCutArc() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogcutspline.cpp b/src/libs/vtools/dialogs/tools/dialogcutspline.cpp index fe6f2ffc7..f5c8a46a2 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutspline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcutspline.cpp @@ -73,7 +73,6 @@ DialogCutSpline::DialogCutSpline(const VContainer *data, const quint32 &toolId, //--------------------------------------------------------------------------------------------------------------------- DialogCutSpline::~DialogCutSpline() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp index 181f958c2..d240740bc 100644 --- a/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcutsplinepath.cpp @@ -73,7 +73,6 @@ DialogCutSplinePath::DialogCutSplinePath(const VContainer *data, const quint32 & //--------------------------------------------------------------------------------------------------------------------- DialogCutSplinePath::~DialogCutSplinePath() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogendline.cpp b/src/libs/vtools/dialogs/tools/dialogendline.cpp index e1a921897..dd668813e 100644 --- a/src/libs/vtools/dialogs/tools/dialogendline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogendline.cpp @@ -167,7 +167,7 @@ void DialogEndLine::ChosenObject(quint32 id, const SceneObject &type) if (SetObject(id, ui->comboBoxBasePoint, "")) { vis->VisualMode(id); - connect(vis, &Visualization::ToolTip, this, &DialogTool::ShowVisToolTip); + connect(vis.data(), &Visualization::ToolTip, this, &DialogTool::ShowVisToolTip); prepare = true; } } @@ -343,7 +343,6 @@ void DialogEndLine::closeEvent(QCloseEvent *event) //--------------------------------------------------------------------------------------------------------------------- DialogEndLine::~DialogEndLine() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogheight.cpp b/src/libs/vtools/dialogs/tools/dialogheight.cpp index 81e0b40b8..9cb4fad5d 100644 --- a/src/libs/vtools/dialogs/tools/dialogheight.cpp +++ b/src/libs/vtools/dialogs/tools/dialogheight.cpp @@ -75,7 +75,6 @@ DialogHeight::DialogHeight(const VContainer *data, const quint32 &toolId, QWidge //--------------------------------------------------------------------------------------------------------------------- DialogHeight::~DialogHeight() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogline.cpp b/src/libs/vtools/dialogs/tools/dialogline.cpp index 10a908252..298937b69 100644 --- a/src/libs/vtools/dialogs/tools/dialogline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogline.cpp @@ -68,7 +68,6 @@ DialogLine::DialogLine(const VContainer *data, const quint32 &toolId, QWidget *p //--------------------------------------------------------------------------------------------------------------------- DialogLine::~DialogLine() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialoglineintersect.cpp b/src/libs/vtools/dialogs/tools/dialoglineintersect.cpp index 0688571d1..5fe9c1f4b 100644 --- a/src/libs/vtools/dialogs/tools/dialoglineintersect.cpp +++ b/src/libs/vtools/dialogs/tools/dialoglineintersect.cpp @@ -75,7 +75,6 @@ DialogLineIntersect::DialogLineIntersect(const VContainer *data, const quint32 & //--------------------------------------------------------------------------------------------------------------------- DialogLineIntersect::~DialogLineIntersect() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp index a61a6e3d0..7f6b56f61 100644 --- a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp +++ b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp @@ -86,7 +86,6 @@ DialogLineIntersectAxis::DialogLineIntersectAxis(const VContainer *data, const q //--------------------------------------------------------------------------------------------------------------------- DialogLineIntersectAxis::~DialogLineIntersectAxis() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialognormal.cpp b/src/libs/vtools/dialogs/tools/dialognormal.cpp index d219318fd..11505b5b4 100644 --- a/src/libs/vtools/dialogs/tools/dialognormal.cpp +++ b/src/libs/vtools/dialogs/tools/dialognormal.cpp @@ -132,7 +132,6 @@ void DialogNormal::DeployFormulaTextEdit() //--------------------------------------------------------------------------------------------------------------------- DialogNormal::~DialogNormal() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogpointfromarcandtangent.cpp b/src/libs/vtools/dialogs/tools/dialogpointfromarcandtangent.cpp index 70899b26b..b35e26fcf 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointfromarcandtangent.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointfromarcandtangent.cpp @@ -63,7 +63,6 @@ DialogPointFromArcAndTangent::DialogPointFromArcAndTangent(const VContainer *dat //--------------------------------------------------------------------------------------------------------------------- DialogPointFromArcAndTangent::~DialogPointFromArcAndTangent() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp b/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp index 9b0d84830..ed7ce0ac8 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointfromcircleandtangent.cpp @@ -88,7 +88,6 @@ DialogPointFromCircleAndTangent::DialogPointFromCircleAndTangent(const VContaine //--------------------------------------------------------------------------------------------------------------------- DialogPointFromCircleAndTangent::~DialogPointFromCircleAndTangent() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp b/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp index e20065ab2..29d367c0e 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointofcontact.cpp @@ -81,7 +81,6 @@ DialogPointOfContact::DialogPointOfContact(const VContainer *data, const quint32 //--------------------------------------------------------------------------------------------------------------------- DialogPointOfContact::~DialogPointOfContact() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogpointofintersection.cpp b/src/libs/vtools/dialogs/tools/dialogpointofintersection.cpp index dc62a0b03..869af1e5e 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointofintersection.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointofintersection.cpp @@ -71,7 +71,6 @@ DialogPointOfIntersection::DialogPointOfIntersection(const VContainer *data, con //--------------------------------------------------------------------------------------------------------------------- DialogPointOfIntersection::~DialogPointOfIntersection() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogpointofintersectionarcs.cpp b/src/libs/vtools/dialogs/tools/dialogpointofintersectionarcs.cpp index 08e2d66a9..00b31ca68 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointofintersectionarcs.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointofintersectionarcs.cpp @@ -67,7 +67,6 @@ DialogPointOfIntersectionArcs::DialogPointOfIntersectionArcs(const VContainer *d //--------------------------------------------------------------------------------------------------------------------- DialogPointOfIntersectionArcs::~DialogPointOfIntersectionArcs() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp index 90abbd364..d43be12c0 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncircles.cpp @@ -104,7 +104,6 @@ DialogPointOfIntersectionCircles::DialogPointOfIntersectionCircles(const VContai //--------------------------------------------------------------------------------------------------------------------- DialogPointOfIntersectionCircles::~DialogPointOfIntersectionCircles() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncurves.cpp b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncurves.cpp index c6c09102c..2a0bb2e9b 100644 --- a/src/libs/vtools/dialogs/tools/dialogpointofintersectioncurves.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpointofintersectioncurves.cpp @@ -65,7 +65,6 @@ DialogPointOfIntersectionCurves::DialogPointOfIntersectionCurves(const VContaine //--------------------------------------------------------------------------------------------------------------------- DialogPointOfIntersectionCurves::~DialogPointOfIntersectionCurves() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogrotation.cpp b/src/libs/vtools/dialogs/tools/dialogrotation.cpp index 8af42964d..08c8f33ae 100644 --- a/src/libs/vtools/dialogs/tools/dialogrotation.cpp +++ b/src/libs/vtools/dialogs/tools/dialogrotation.cpp @@ -81,7 +81,6 @@ DialogRotation::DialogRotation(const VContainer *data, const quint32 &toolId, QW //--------------------------------------------------------------------------------------------------------------------- DialogRotation::~DialogRotation() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp index 79f4ff42b..881944dd8 100644 --- a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp +++ b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp @@ -143,7 +143,6 @@ void DialogShoulderPoint::DeployFormulaTextEdit() //--------------------------------------------------------------------------------------------------------------------- DialogShoulderPoint::~DialogShoulderPoint() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogspline.cpp b/src/libs/vtools/dialogs/tools/dialogspline.cpp index ffd05e80d..cc74e38e2 100644 --- a/src/libs/vtools/dialogs/tools/dialogspline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogspline.cpp @@ -122,7 +122,6 @@ DialogSpline::DialogSpline(const VContainer *data, const quint32 &toolId, QWidge //--------------------------------------------------------------------------------------------------------------------- DialogSpline::~DialogSpline() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp index 338f00ce6..ed4a3eb50 100644 --- a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp @@ -108,7 +108,6 @@ DialogSplinePath::DialogSplinePath(const VContainer *data, const quint32 &toolId //--------------------------------------------------------------------------------------------------------------------- DialogSplinePath::~DialogSplinePath() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogtool.cpp b/src/libs/vtools/dialogs/tools/dialogtool.cpp index af36c41af..1515c9af8 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.cpp +++ b/src/libs/vtools/dialogs/tools/dialogtool.cpp @@ -78,6 +78,11 @@ DialogTool::DialogTool(const VContainer *data, const quint32 &toolId, QWidget *p DialogTool::~DialogTool() { emit ToolTip(""); + + if (not vis.isNull()) + { + delete vis; + } } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/dialogs/tools/dialogtool.h b/src/libs/vtools/dialogs/tools/dialogtool.h index ee47436bc..1a5a0ee78 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.h +++ b/src/libs/vtools/dialogs/tools/dialogtool.h @@ -181,7 +181,7 @@ protected: /** @brief number number of handled objects */ qint32 number; - Visualization *vis; + QPointer vis; virtual void closeEvent ( QCloseEvent * event ) Q_DECL_OVERRIDE; virtual void showEvent( QShowEvent *event ) Q_DECL_OVERRIDE; @@ -241,9 +241,6 @@ protected: template void AddVisualization(); - template - void DeleteVisualization(); - void ChangeColor(QWidget *widget, const QColor &color); virtual void ShowVisualization() {} /** @@ -360,19 +357,6 @@ inline void DialogTool::AddVisualization() } } -//--------------------------------------------------------------------------------------------------------------------- -template -inline void DialogTool::DeleteVisualization() -{ - T *toolVis = qobject_cast(vis); - SCASSERT(toolVis != nullptr); - - if (qApp->getCurrentScene()->items().contains(toolVis)) - { // In some cases scene delete object yourself. If not make check program will crash. - delete vis; - } -} - //--------------------------------------------------------------------------------------------------------------------- template inline T DialogTool::getCurrentCrossPoint(QComboBox *box) const diff --git a/src/libs/vtools/dialogs/tools/dialogtriangle.cpp b/src/libs/vtools/dialogs/tools/dialogtriangle.cpp index 4076937cf..248390888 100644 --- a/src/libs/vtools/dialogs/tools/dialogtriangle.cpp +++ b/src/libs/vtools/dialogs/tools/dialogtriangle.cpp @@ -75,7 +75,6 @@ DialogTriangle::DialogTriangle(const VContainer *data, const quint32 &toolId, QW //--------------------------------------------------------------------------------------------------------------------- DialogTriangle::~DialogTriangle() { - DeleteVisualization(); delete ui; } diff --git a/src/libs/vtools/dialogs/tools/dialogtruedarts.cpp b/src/libs/vtools/dialogs/tools/dialogtruedarts.cpp index ba909e210..cb8c310b4 100644 --- a/src/libs/vtools/dialogs/tools/dialogtruedarts.cpp +++ b/src/libs/vtools/dialogs/tools/dialogtruedarts.cpp @@ -80,7 +80,6 @@ DialogTrueDarts::DialogTrueDarts(const VContainer *data, const quint32 &toolId, //--------------------------------------------------------------------------------------------------------------------- DialogTrueDarts::~DialogTrueDarts() { - DeleteVisualization(); delete ui; } From eec1240da0fbfce228a8b59ed1601b503c644554 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 15:38:55 +0300 Subject: [PATCH 09/69] Fixed resizing scene when move detail. When first time create detail MoveDetail class gets wrong scene pointer and this cause refreshing wrong scene. --HG-- branch : develop --- src/libs/vtools/tools/vtooldetail.cpp | 2 +- src/libs/vtools/undocommands/movedetail.cpp | 4 ++-- src/libs/vtools/undocommands/movedetail.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libs/vtools/tools/vtooldetail.cpp b/src/libs/vtools/tools/vtooldetail.cpp index 24bfa9db7..9eed8d8c3 100644 --- a/src/libs/vtools/tools/vtooldetail.cpp +++ b/src/libs/vtools/tools/vtooldetail.cpp @@ -378,7 +378,7 @@ QVariant VToolDetail::itemChange(QGraphicsItem::GraphicsItemChange change, const // value - this is new position. const QPointF newPos = value.toPointF(); - MoveDetail *moveDet = new MoveDetail(doc, newPos.x(), newPos.y(), id); + MoveDetail *moveDet = new MoveDetail(doc, newPos.x(), newPos.y(), id, scene()); connect(moveDet, &MoveDetail::NeedLiteParsing, doc, &VAbstractPattern::LiteParseTree); qApp->getUndoStack()->push(moveDet); diff --git a/src/libs/vtools/undocommands/movedetail.cpp b/src/libs/vtools/undocommands/movedetail.cpp index a7390230a..603db86a7 100644 --- a/src/libs/vtools/undocommands/movedetail.cpp +++ b/src/libs/vtools/undocommands/movedetail.cpp @@ -35,8 +35,8 @@ //--------------------------------------------------------------------------------------------------------------------- MoveDetail::MoveDetail(VAbstractPattern *doc, const double &x, const double &y, const quint32 &id, - QUndoCommand *parent) - : VUndoCommand(QDomElement(), doc, parent), oldX(0.0), oldY(0.0), newX(x), newY(y), scene(qApp->getCurrentScene()) + QGraphicsScene *scene, QUndoCommand *parent) + : VUndoCommand(QDomElement(), doc, parent), oldX(0.0), oldY(0.0), newX(x), newY(y), scene(scene) { setText(QObject::tr("move detail")); nodeId = id; diff --git a/src/libs/vtools/undocommands/movedetail.h b/src/libs/vtools/undocommands/movedetail.h index d5d9ebdd1..a8e306c4d 100644 --- a/src/libs/vtools/undocommands/movedetail.h +++ b/src/libs/vtools/undocommands/movedetail.h @@ -37,7 +37,7 @@ class MoveDetail : public VUndoCommand { Q_OBJECT public: - MoveDetail(VAbstractPattern *doc, const double &x, const double &y, const quint32 &id, + MoveDetail(VAbstractPattern *doc, const double &x, const double &y, const quint32 &id, QGraphicsScene *scene, QUndoCommand *parent = 0); virtual ~MoveDetail() Q_DECL_OVERRIDE; virtual void undo() Q_DECL_OVERRIDE; From a78a516ce908e9cea43ee3592a7adecb393d6a63 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 16:47:52 +0300 Subject: [PATCH 10/69] Remove zoom original from toolbar. Rare used feature as i see it. --HG-- branch : develop --- src/app/valentina/mainwindow.ui | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/valentina/mainwindow.ui b/src/app/valentina/mainwindow.ui index 60db7044b..cf7b63e29 100644 --- a/src/app/valentina/mainwindow.ui +++ b/src/app/valentina/mainwindow.ui @@ -1558,7 +1558,6 @@ - From a2acb032a259314b18029e395185b3c9eeab0700 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 18:04:26 +0300 Subject: [PATCH 11/69] Use static assert to check if minimal version is high enough to delete code that needed for backward compatibility. --HG-- branch : develop --- src/app/valentina/xml/vpattern.h | 5 ++++ src/libs/ifc/xml/vabstractconverter.h | 2 ++ src/libs/ifc/xml/vpatternconverter.cpp | 27 ++--------------- src/libs/ifc/xml/vpatternconverter.h | 32 +++++++++++++++++++-- src/libs/ifc/xml/vvitconverter.cpp | 27 ++--------------- src/libs/ifc/xml/vvitconverter.h | 32 +++++++++++++++++++-- src/libs/ifc/xml/vvstconverter.cpp | 27 ++--------------- src/libs/ifc/xml/vvstconverter.h | 32 +++++++++++++++++++-- src/libs/vtools/tools/vtooluniondetails.cpp | 5 ++++ 9 files changed, 108 insertions(+), 81 deletions(-) diff --git a/src/app/valentina/xml/vpattern.h b/src/app/valentina/xml/vpattern.h index c23accf08..9ccf41aa6 100644 --- a/src/app/valentina/xml/vpattern.h +++ b/src/app/valentina/xml/vpattern.h @@ -32,6 +32,7 @@ #include "../ifc/xml/vabstractpattern.h" #include "../ifc/xml/vtoolrecord.h" #include "../vpatterndb/vcontainer.h" +#include "../ifc/xml/vpatternconverter.h" class VDataTool; class VMainGraphicsScene; @@ -171,12 +172,16 @@ private: void ParseToolTrueDarts(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); // TODO. Delete if minimal supported version is 0.2.7 + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < CONVERTER_VERSION_CHECK(0, 2, 7), + "Time to refactor the code."); void ParseOldToolSpline(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); void ParseToolSpline(VMainGraphicsScene *scene, QDomElement &domElement, const Document &parse); void ParseToolCubicBezier(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); // TODO. Delete if minimal supported version is 0.2.7 + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < CONVERTER_VERSION_CHECK(0, 2, 7), + "Time to refactor the code."); void ParseOldToolSplinePath(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); void ParseToolSplinePath(VMainGraphicsScene *scene, const QDomElement &domElement, const Document &parse); diff --git a/src/libs/ifc/xml/vabstractconverter.h b/src/libs/ifc/xml/vabstractconverter.h index 6fa3599ee..5a3060664 100644 --- a/src/libs/ifc/xml/vabstractconverter.h +++ b/src/libs/ifc/xml/vabstractconverter.h @@ -31,6 +31,8 @@ #include "vdomdocument.h" +#define CONVERTER_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) + class VAbstractConverter :public VDomDocument { Q_DECLARE_TR_FUNCTIONS(VAbstractConverter) diff --git a/src/libs/ifc/xml/vpatternconverter.cpp b/src/libs/ifc/xml/vpatternconverter.cpp index cb16a65fc..dd72da2b6 100644 --- a/src/libs/ifc/xml/vpatternconverter.cpp +++ b/src/libs/ifc/xml/vpatternconverter.cpp @@ -46,6 +46,9 @@ const QString VPatternConverter::PatternMinVerStr = QStringLiteral("0.1.0"); const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.3.2"); const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.3.2.xsd"); +constexpr int VPatternConverter::PatternMinVer; // <== DON'T FORGET TO UPDATE TOO!!!! +constexpr int VPatternConverter::PatternMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!! + //--------------------------------------------------------------------------------------------------------------------- VPatternConverter::VPatternConverter(const QString &fileName) :VAbstractConverter(fileName) @@ -57,30 +60,6 @@ VPatternConverter::VPatternConverter(const QString &fileName) VPatternConverter::~VPatternConverter() {} -//--------------------------------------------------------------------------------------------------------------------- -int VPatternConverter::MinVer() const -{ - return GetVersion(PatternMinVerStr); -} - -//--------------------------------------------------------------------------------------------------------------------- -int VPatternConverter::MaxVer() const -{ - return GetVersion(PatternMaxVerStr); -} - -//--------------------------------------------------------------------------------------------------------------------- -QString VPatternConverter::MinVerStr() const -{ - return PatternMinVerStr; -} - -//--------------------------------------------------------------------------------------------------------------------- -QString VPatternConverter::MaxVerStr() const -{ - return PatternMaxVerStr; -} - //--------------------------------------------------------------------------------------------------------------------- QString VPatternConverter::XSDSchema(int ver) const { diff --git a/src/libs/ifc/xml/vpatternconverter.h b/src/libs/ifc/xml/vpatternconverter.h index 99f3f5638..cbecfa5f0 100644 --- a/src/libs/ifc/xml/vpatternconverter.h +++ b/src/libs/ifc/xml/vpatternconverter.h @@ -38,8 +38,10 @@ public: explicit VPatternConverter(const QString &fileName); virtual ~VPatternConverter() Q_DECL_OVERRIDE; - static const QString PatternMaxVerStr; - static const QString CurrentSchema; + static const QString PatternMaxVerStr; + static const QString CurrentSchema; + static constexpr int PatternMinVer = CONVERTER_VERSION_CHECK(0, 1, 0); + static constexpr int PatternMaxVer = CONVERTER_VERSION_CHECK(0, 3, 2); protected: virtual int MinVer() const Q_DECL_OVERRIDE; @@ -54,7 +56,7 @@ protected: private: Q_DISABLE_COPY(VPatternConverter) - static const QString PatternMinVerStr; + static const QString PatternMinVerStr; void ToV0_1_1(); void ToV0_1_2(); @@ -105,4 +107,28 @@ private: static QMap OldNamesToNewNames_InV0_2_1(); }; +//--------------------------------------------------------------------------------------------------------------------- +inline int VPatternConverter::MinVer() const +{ + return PatternMinVer; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline int VPatternConverter::MaxVer() const +{ + return PatternMaxVer; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline QString VPatternConverter::MinVerStr() const +{ + return PatternMinVerStr; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline QString VPatternConverter::MaxVerStr() const +{ + return PatternMaxVerStr; +} + #endif // VPATTERNCONVERTER_H diff --git a/src/libs/ifc/xml/vvitconverter.cpp b/src/libs/ifc/xml/vvitconverter.cpp index 0cf65d017..adbc1a058 100644 --- a/src/libs/ifc/xml/vvitconverter.cpp +++ b/src/libs/ifc/xml/vvitconverter.cpp @@ -43,6 +43,9 @@ const QString VVITConverter::MeasurementMinVerStr = QStringLiteral("0.2.0"); const QString VVITConverter::MeasurementMaxVerStr = QStringLiteral("0.3.3"); const QString VVITConverter::CurrentSchema = QStringLiteral("://schema/individual_measurements/v0.3.3.xsd"); +constexpr int VVITConverter::MeasurementMinVer; // <== DON'T FORGET TO UPDATE TOO!!!! +constexpr int VVITConverter::MeasurementMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!! + //--------------------------------------------------------------------------------------------------------------------- VVITConverter::VVITConverter(const QString &fileName) :VAbstractMConverter(fileName) @@ -54,30 +57,6 @@ VVITConverter::VVITConverter(const QString &fileName) VVITConverter::~VVITConverter() {} -//--------------------------------------------------------------------------------------------------------------------- -int VVITConverter::MinVer() const -{ - return GetVersion(MeasurementMinVerStr); -} - -//--------------------------------------------------------------------------------------------------------------------- -int VVITConverter::MaxVer() const -{ - return GetVersion(MeasurementMaxVerStr); -} - -//--------------------------------------------------------------------------------------------------------------------- -QString VVITConverter::MinVerStr() const -{ - return MeasurementMinVerStr; -} - -//--------------------------------------------------------------------------------------------------------------------- -QString VVITConverter::MaxVerStr() const -{ - return MeasurementMaxVerStr; -} - //--------------------------------------------------------------------------------------------------------------------- QString VVITConverter::XSDSchema(int ver) const { diff --git a/src/libs/ifc/xml/vvitconverter.h b/src/libs/ifc/xml/vvitconverter.h index ac6fa638e..b72d43e5c 100644 --- a/src/libs/ifc/xml/vvitconverter.h +++ b/src/libs/ifc/xml/vvitconverter.h @@ -38,8 +38,10 @@ public: explicit VVITConverter(const QString &fileName); virtual ~VVITConverter() Q_DECL_OVERRIDE; - static const QString MeasurementMaxVerStr; - static const QString CurrentSchema; + static const QString MeasurementMaxVerStr; + static const QString CurrentSchema; + static constexpr int MeasurementMinVer = CONVERTER_VERSION_CHECK(0, 2, 0); + static constexpr int MeasurementMaxVer = CONVERTER_VERSION_CHECK(0, 3, 3); protected: virtual int MinVer() const Q_DECL_OVERRIDE; @@ -54,7 +56,7 @@ protected: private: Q_DISABLE_COPY(VVITConverter) - static const QString MeasurementMinVerStr; + static const QString MeasurementMinVerStr; void AddNewTagsForV0_3_0(); QString MUnitV0_2_0(); @@ -70,4 +72,28 @@ private: void ToV0_3_3(); }; +//--------------------------------------------------------------------------------------------------------------------- +inline int VVITConverter::MinVer() const +{ + return MeasurementMinVer; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline int VVITConverter::MaxVer() const +{ + return MeasurementMaxVer; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline QString VVITConverter::MinVerStr() const +{ + return MeasurementMinVerStr; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline QString VVITConverter::MaxVerStr() const +{ + return MeasurementMaxVerStr; +} + #endif // VVITCONVERTER_H diff --git a/src/libs/ifc/xml/vvstconverter.cpp b/src/libs/ifc/xml/vvstconverter.cpp index e1385205c..56b428588 100644 --- a/src/libs/ifc/xml/vvstconverter.cpp +++ b/src/libs/ifc/xml/vvstconverter.cpp @@ -43,6 +43,9 @@ const QString VVSTConverter::MeasurementMinVerStr = QStringLiteral("0.3.0"); const QString VVSTConverter::MeasurementMaxVerStr = QStringLiteral("0.4.2"); const QString VVSTConverter::CurrentSchema = QStringLiteral("://schema/standard_measurements/v0.4.2.xsd"); +constexpr int VVSTConverter::MeasurementMinVer; // <== DON'T FORGET TO UPDATE TOO!!!! +constexpr int VVSTConverter::MeasurementMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!! + //--------------------------------------------------------------------------------------------------------------------- VVSTConverter::VVSTConverter(const QString &fileName) :VAbstractMConverter(fileName) @@ -54,30 +57,6 @@ VVSTConverter::VVSTConverter(const QString &fileName) VVSTConverter::~VVSTConverter() {} -//--------------------------------------------------------------------------------------------------------------------- -int VVSTConverter::MinVer() const -{ - return GetVersion(MeasurementMinVerStr); -} - -//--------------------------------------------------------------------------------------------------------------------- -int VVSTConverter::MaxVer() const -{ - return GetVersion(MeasurementMaxVerStr); -} - -//--------------------------------------------------------------------------------------------------------------------- -QString VVSTConverter::MinVerStr() const -{ - return MeasurementMinVerStr; -} - -//--------------------------------------------------------------------------------------------------------------------- -QString VVSTConverter::MaxVerStr() const -{ - return MeasurementMaxVerStr; -} - //--------------------------------------------------------------------------------------------------------------------- QString VVSTConverter::XSDSchema(int ver) const { diff --git a/src/libs/ifc/xml/vvstconverter.h b/src/libs/ifc/xml/vvstconverter.h index 2d1672250..7619f3ebe 100644 --- a/src/libs/ifc/xml/vvstconverter.h +++ b/src/libs/ifc/xml/vvstconverter.h @@ -38,8 +38,10 @@ public: explicit VVSTConverter(const QString &fileName); virtual ~VVSTConverter() Q_DECL_OVERRIDE; - static const QString MeasurementMaxVerStr; - static const QString CurrentSchema; + static const QString MeasurementMaxVerStr; + static const QString CurrentSchema; + static constexpr int MeasurementMinVer = CONVERTER_VERSION_CHECK(0, 3, 0); + static constexpr int MeasurementMaxVer = CONVERTER_VERSION_CHECK(0, 4, 2); protected: virtual int MinVer() const Q_DECL_OVERRIDE; @@ -54,7 +56,7 @@ protected: private: Q_DISABLE_COPY(VVSTConverter) - static const QString MeasurementMinVerStr; + static const QString MeasurementMinVerStr; void AddNewTagsForV0_4_0(); void RemoveTagsForV0_4_0(); @@ -68,4 +70,28 @@ private: void ToV0_4_2(); }; +//--------------------------------------------------------------------------------------------------------------------- +inline int VVSTConverter::MinVer() const +{ + return MeasurementMinVer; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline int VVSTConverter::MaxVer() const +{ + return MeasurementMaxVer; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline QString VVSTConverter::MinVerStr() const +{ + return MeasurementMinVerStr; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline QString VVSTConverter::MaxVerStr() const +{ + return MeasurementMaxVerStr; +} + #endif // VMEASUREMENTCONVERTER_H diff --git a/src/libs/vtools/tools/vtooluniondetails.cpp b/src/libs/vtools/tools/vtooluniondetails.cpp index 33a07eef4..dffd23f26 100644 --- a/src/libs/vtools/tools/vtooluniondetails.cpp +++ b/src/libs/vtools/tools/vtooluniondetails.cpp @@ -33,6 +33,7 @@ #include "../../vgeometry/varc.h" #include "../../vgeometry/vsplinepath.h" #include "../dialogs/tools/dialoguniondetails.h" +#include "../ifc/xml/vpatternconverter.h" #include @@ -649,6 +650,8 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d // Remove it if min version is 0.3.2 // Instead: // UpdatePoints(data, d1.RemoveEdge(indexD1), i, children); + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < CONVERTER_VERSION_CHECK(0, 3, 2), + "Time to refactor the code."); if (children.size() != countNodeD2) { UpdatePoints(data, d1.RemoveEdge(indexD1), i, children); @@ -671,6 +674,8 @@ VToolUnionDetails* VToolUnionDetails::Create(const quint32 _id, const VDetail &d } while (pointsD2 < countNodeD2-1); // This check need for backward compatibility // Remove it if min version is 0.3.2 + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < CONVERTER_VERSION_CHECK(0, 3, 2), + "Time to refactor the code."); if (children.size() == countNodeD2) { break; From d94b3dad14420060e3cecdf626bc09890e49f40c Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 18:15:28 +0300 Subject: [PATCH 12/69] Fixed build on Mac OS X. --HG-- branch : develop --- src/app/valentina/mainwindow.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index ff76c450a..b6d8f9069 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -182,7 +182,6 @@ MainWindow::MainWindow(QWidget *parent) #if defined(Q_OS_MAC) // On Mac deafault icon size is 32x32. - ui->toolBarArrows->setIconSize(QSize(24, 24)); ui->toolBarDraws->setIconSize(QSize(24, 24)); ui->toolBarOption->setIconSize(QSize(24, 24)); ui->toolBarStages->setIconSize(QSize(24, 24)); From e76a174ff0f80e1b74674cabe545a4011a3cc4f8 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 7 Jul 2016 19:46:46 +0300 Subject: [PATCH 13/69] Updated file "Measurement body diagrams". Added file "Measurement body points". --HG-- branch : develop --- share/measurement-body-diagram.svg | 6365 ++++++++++++++-------------- share/measurement-body-points.svg | 1508 +++++++ 2 files changed, 4781 insertions(+), 3092 deletions(-) create mode 100644 share/measurement-body-points.svg diff --git a/share/measurement-body-diagram.svg b/share/measurement-body-diagram.svg index 712985755..480815879 100644 --- a/share/measurement-body-diagram.svg +++ b/share/measurement-body-diagram.svg @@ -12,8 +12,8 @@ id="svg2" version="1.1" inkscape:version="0.91 r" - width="3099.6279" - height="6715.0972" + width="90.57cm" + height="192.5cm" sodipodi:docname="measurement-body-diagram.svg" inkscape:export-filename="/home/susan/Documents/Valentina/Measurements/measurement-body-diagram_20150730_50dpi.png" inkscape:export-xdpi="50" @@ -26,7 +26,7 @@ image/svg+xml - + @@ -42,7 +42,7 @@ @@ -55,7 +55,7 @@ style="overflow:visible"> @@ -69,7 +69,7 @@ style="overflow:visible"> @@ -84,7 +84,7 @@ @@ -98,7 +98,7 @@ @@ -112,7 +112,7 @@ @@ -126,7 +126,7 @@ @@ -140,7 +140,7 @@ @@ -154,7 +154,7 @@ @@ -168,7 +168,7 @@ @@ -182,7 +182,7 @@ @@ -196,7 +196,7 @@ @@ -210,7 +210,7 @@ @@ -224,7 +224,7 @@ @@ -238,7 +238,7 @@ @@ -252,7 +252,7 @@ @@ -266,7 +266,7 @@ @@ -280,7 +280,7 @@ @@ -293,7 +293,7 @@ style="overflow:visible"> @@ -308,7 +308,7 @@ @@ -322,22 +322,22 @@ guidetolerance="10" inkscape:pageopacity="1" inkscape:pageshadow="2" - inkscape:window-width="1855" - inkscape:window-height="1056" + inkscape:window-width="709" + inkscape:window-height="437" id="ValentinaMeasurements" showgrid="false" - inkscape:zoom="2.1100067" - inkscape:cx="2841.9301" - inkscape:cy="80.298375" + inkscape:zoom="0.5338" + inkscape:cx="1946.4916" + inkscape:cy="3328" inkscape:window-x="65" - inkscape:window-y="24" - inkscape:window-maximized="1" + inkscape:window-y="615" + inkscape:window-maximized="0" inkscape:current-layer="layer2" - fit-margin-left="0" - fit-margin-top="0" - fit-margin-right="0" - fit-margin-bottom="0" - units="in" + fit-margin-left="1.5" + fit-margin-top="1.5" + fit-margin-right="1.5" + fit-margin-bottom="1.5" + units="cm" showguides="false" inkscape:guide-bbox="true" /> + transform="translate(132,-1412)"> ©2015 - 2016 Valentina Project©2015 - 2016 Valentina Projecthttp://www.valentina-project.org @@ -446,11 +446,11 @@ sodipodi:nodetypes="caasac" inkscape:connector-curvature="0" id="path3817-6-4" - d="m 744.9,1228 c -4,2 -16,0 -24,-2 -12,-4 -23,-13 -36,-17 -13,-3 -24,-1 -41,-3 -13,-1 -25,0 -38,3 -4,1 -11,4 -11,4" - style="fill:none;stroke:#dba981;stroke-width:0.89429998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.6829, 0.8943;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 744.9,1228 c -4,2 -16,0 -24,-2 c -12,-4 -23,-13 -36,-17 c -13,-3 -24,-1 -41,-3 c -13,-1 -25,0 -38,3 c -4,1 -11,4 -11,4" + style="fill:none;stroke:#dba981;stroke-width:0.8943;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.6829, 0.8943;stroke-dashoffset:0;stroke-opacity:1" /> @@ -468,7 +468,7 @@ sodipodi:nodetypes="cc" /> @@ -476,40 +476,40 @@ sodipodi:nodetypes="csasc" inkscape:connector-curvature="0" id="path2993-6-7" - d="m 734.9,1229 c 2,3 -6,45 -14,66 -4,11 -8,20 -7,31 1,13 7,25 13,37 11,22 22,71 19,71" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 734.9,1229 c 2,3 -6,45 -14,66 c -4,11 -8,20 -7,31 c 1,13 7,25 13,37 c 11,22 22,71 19,71" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 749.9,1147 c -15,4 -19,9 -24,18 c -9,16 -18,40 -7,55 c 6,8 24,13 30,5" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 637.9,1101 c 0,0 11,5 17,5 c 33,2 41,-9 41,-9" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 658.9,1211 c 0,8 -6,14 -14,14 c -7,0 -13,-6 -13,-14 c 0,-7 6,-13 13,-13 c 8,0 14,6 14,13" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + d="m 658.9,1241 c 0,8 -6,14 -14,14 c -7,0 -13,-6 -13,-14 c 0,-7 6,-13 13,-13 c 8,0 14,6 14,13" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + d="m 657.9,1273 c 0,7 -6,13 -13,13 c -7,0 -13,-6 -13,-13 c 0,-8 6,-14 13,-14 c 7,0 13,6 13,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + d="m 658.9,1343 c 0,8 -6,14 -13,14 c -7,0 -14,-6 -14,-14 c 0,-7 7,-13 14,-13 c 7,0 13,6 13,13" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> 17 @@ -612,11 +612,11 @@ sodipodi:nodetypes="ccccccscccccscccaccccccc" inkscape:connector-curvature="0" id="path4174" - d="m 1178,504 c -2,-28.4 -2,-38.6 0,-57.7 2,-16.4 5,-32.7 9,-48.5 3,-8.9 9,-16.7 10,-25.8 2,-13.3 -2,-26.8 -3,-40.2 0,-6.2 2,-10.8 0,-18.4 -9,-8.2 -17,-27.5 -17,-40.2 0,-12.5 8,-20.5 11,-33 2,-6 -6,-14.8 -8,-25.1 -3,-10.4 0,-22.4 5,-23.3 10,-2.1 26,-8.9 35,-16.2 8,-7.2 7,-37.3 7,-37.3 0,0 1,-5.3 17,-6.5 15,-1.1 43,2.4 43,2.4 0,0 -2,16.9 4,25.1 11,13.7 36,19.7 46,24.2 15,6.8 14,12.2 16,20.8 4,20.6 -8,44.3 -15,61.2 -6,13.6 -6,29.1 -10,43.4 -3,8.6 -6,16.9 -9,25.6 -2,8.9 -5,17.8 -4,27 0,12.1 4,24.5 10,35 6,11 16,31 20,47.5 5,15.6 6,31.7 7,47.8" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1178,504 c -2,-28.4 -2,-38.6 0,-57.7 c 2,-16.4 5,-32.7 9,-48.5 c 3,-8.9 9,-16.7 10,-25.8 c 2,-13.3 -2,-26.8 -3,-40.2 c 0,-6.2 2,-10.8 0,-18.4 c -9,-8.2 -17,-27.5 -17,-40.2 c 0,-12.5 8,-20.5 11,-33 c 2,-6 -6,-14.8 -8,-25.1 c -3,-10.4 0,-22.4 5,-23.3 c 10,-2.1 26,-8.9 35,-16.2 c 8,-7.2 7,-37.3 7,-37.3 c 0,0 1,-5.3 17,-6.5 c 15,-1.1 43,2.4 43,2.4 c 0,0 -2,16.9 4,25.1 c 11,13.7 36,19.7 46,24.2 c 15,6.8 14,12.2 16,20.8 c 4,20.6 -8,44.3 -15,61.2 c -6,13.6 -6,29.1 -10,43.4 c -3,8.6 -6,16.9 -9,25.6 c -2,8.9 -5,17.8 -4,27 c 0,12.1 4,24.5 10,35 c 6,11 16,31 20,47.5 c 5,15.6 6,31.7 7,47.8" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#7dc832;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:0.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.163, 0.721;stroke-dashoffset:0;stroke-opacity:1" /> @@ -685,27 +685,27 @@ sodipodi:nodetypes="caaaac" inkscape:connector-curvature="0" id="path6792-8" - d="m 403.9,2509 c 0,0 2.4,11 7.3,13 2.4,1 4.8,0 7.2,-2 5.7,-5 7.3,-14 8.1,-23 0,-5 -2.4,-12 -4.8,-18 -1.7,-6 -8.1,-17 -8.1,-17" - style="fill:none;stroke:#dba981;stroke-width:2.9999001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 403.9,2509 c 0,0 2.4,11 7.3,13 c 2.4,1 4.8,0 7.2,-2 c 5.7,-5 7.3,-14 8.1,-23 c 0,-5 -2.4,-12 -4.8,-18 c -1.7,-6 -8.1,-17 -8.1,-17" + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#7dc832;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 517.6,2563 c 0,6 -4.8,11 -11.3,11 c -5.6,0 -10.5,-5 -10.5,-11 c 0,-6 4.9,-10 10.5,-10 c 6.5,0 11.3,4 11.3,10" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + d="m 489.4,2607 c 0,6 -4.9,11 -11.3,11 c -5.7,0 -10.5,-5 -10.5,-11 c 0,-6 4.8,-11 10.5,-11 c 6.4,0 11.3,5 11.3,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> @@ -714,52 +714,52 @@ inkscape:connector-curvature="0" id="path3878-7-3" d="m 421.7,2526 c 32.2,5 109.6,4 112,-4" - style="fill:none;stroke:#7dc832;stroke-width:2.41860008;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#7dc832;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 457.9,2523 c 0,6 -4.8,11 -10.4,11 c -6.5,0 -11.3,-5 -11.3,-11 c 0,-6 4.8,-11 11.3,-11 c 5.6,0 10.4,5 10.4,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + style="fill:none;stroke:#7dc832;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 489.4,2433 c 0,6 -4.9,11 -10.5,11 c -6.5,0 -11.3,-5 -11.3,-11 c 0,-6 4.8,-11 11.3,-11 c 5.6,0 10.5,5 10.5,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + style="fill:none;stroke:#7dc832;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 517.6,2639 c 0,6 -4.8,11 -10.5,11 c -6.4,0 -11.3,-5 -11.3,-11 c 0,-6 4.9,-10 11.3,-10 c 5.7,0 10.5,4 10.5,10" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + style="fill:none;stroke:#7dc832;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 489.4,2694 c 0,6 -4.9,11 -10.5,11 c -6.5,0 -11.3,-5 -11.3,-11 c 0,-6 4.8,-11 11.3,-11 c 5.6,0 10.5,5 10.5,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + style="fill:none;stroke:#7dc832;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 489.4,2543 c 0,6 -4.9,11 -11.3,11 c -6.5,0 -10.5,-5 -10.5,-11 c 0,-6 4,-11 10.5,-11 c 6.4,0 11.3,5 11.3,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> 28 @@ -890,79 +890,79 @@ sodipodi:nodetypes="csc" inkscape:connector-curvature="0" id="path3825-9-6" - d="m 228.8,2559 c 2.8,-1 10.5,-3 27.6,-3 19.1,0 51.4,4 76.1,7" - style="fill:none;stroke:#dba981;stroke-width:0.72100002;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.163, 0.721;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 228.8,2559 c 2.8,-1 10.5,-3 27.6,-3 c 19.1,0 51.4,4 76.1,7" + style="fill:none;stroke:#dba981;stroke-width:0.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.163, 0.721;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 347,2455 c -9.6,2 -15.7,7 -19.9,14 c -7.5,13 -15.3,33 -5.6,45 c 5.2,6 19.5,7 24.3,0" + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 258,2410 c 0,0 5.9,4 16.8,4 c 24.2,-1 29.4,-7 29.4,-7" + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 219.7,2510 c 3.2,5 30,11 41.4,11 c 24.9,1 62,1 81.8,4" + style="fill:none;stroke:#aaaaaa;stroke-width:2.0155;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8.062, 2.0155;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#aaaaaa;stroke-width:2.0155;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8.062, 2.0155;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#aaaaaa;stroke-width:2.0155;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8.062, 2.0155;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#aaaaaa;stroke-width:2.0155;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8.062, 2.0155;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 267.8,2612 c 0,6 -4.8,10 -10.9,10 c -5.9,0 -10.8,-4 -10.8,-10 c 0,-6 4.9,-11 10.8,-11 c 6,0 10.8,5 10.9,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 9 + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 230.5,2559 l 4.6,-1 l 21.7,-1 c 0,0 22,0 33.3,1 c 14.5,1 43.2,6 43.2,6" + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 267.8,2502 c 0,5 -4.8,10 -10.9,10 c -5.9,0 -10.8,-5 -10.8,-10 c 0,-7 4.9,-12 10.8,-12 c 6,0 10.8,5 10.9,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 267.8,2527 c 0,5 -4.8,10 -10.9,10 c -5.9,0 -10.8,-5 -10.8,-10 c 0,-7 4.9,-12 10.8,-12 c 6,0 10.8,5 10.9,12" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 267.8,2556 c 0,6 -4.8,11 -10.9,11 c -5.9,0 -10.8,-5 -10.8,-11 c 0,-5 4.9,-10 10.8,-10 c 6,0 10.8,5 10.9,10" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.0814;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 5 + style="fill:none;stroke:#aaaaaa;stroke-width:1.6124;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6.4496, 1.6124;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -1193,8 +1193,8 @@ style="fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1416,1175 l 0,1 l 1,0 l -1,1 l 1,1 l 0,1 l 0,1 l 0,1 l 1,0 l 13,-2 l 13,-3 l 1,-1 l -1,-1 l 0,-1 l -1,0 l 1,-2 l -1,0 l 0,-1 c 0,0 0,-1 0,-1 z" + style="fill:#ffc8c8;fill-opacity:1;stroke:#dba981;stroke-width:1.0189;stroke-linecap:round;stroke-opacity:1" /> + d="m 1427,1144 l 0,1 l -1,1 l 0,1 l 1,1 l -2,1 l 1,1 l 0,0 l 1,1 l 10,2 l 11,1 l 0,-1 l 0,-1 l 0,-1 l 0,-1 l 0,-1 l 0,0 l 0,-1 c 0,-1 0,-1 0,-1 z" + style="fill:#ffc8c8;fill-opacity:1;stroke:#dba981;stroke-width:0.9178;stroke-linecap:round;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,505.1,1869)"> + transform="matrix(0.8062,0,0,0.8062,579.2,1851)"> + style="fill:none;stroke:#dba981;stroke-width:3.6863;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,-529.4,3036)"> + d="m 907.3,2757 l 154.7,1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 923,2831 l 126,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -1482,8 +1482,8 @@ sodipodi:role="line">Front @@ -1491,11 +1491,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-9-5-3-0-6" - d="m 1069,2636 -80,194" + d="m 1069,2636 l -80,194" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="matrix(0.8062,0,0,0.8062,-751.3,3040)"> @@ -1559,8 +1559,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1" - d="m 1729,2826 130,1" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1729,2826 l 130,1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1881,2664 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-7 6,-14 14,-14 c 7,0 13,7 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + transform="matrix(0.8062,0,0,0.8062,272.3,3046)"> + d="m 1965,2753 l 164,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1959,2714 l 177,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -1638,13 +1638,13 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1-2" - d="m 1983,2826 130,0" + d="m 1983,2826 l 130,0" style="fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> Back + transform="matrix(0.8062,0,0,0.8062,291.2,2743)"> + d="m 1186,3090 c 42,-2 18,-32 89,-32 c 66,-1 49,31 82,31" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1195,3125 l 151,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1205,3201 c -5,-23 -7,-40 -11,-60 c -3,-14 -2,-30 -8,-44 c -10,-26 -25,-61 -8,-87 c 8,-11 33,-10 53,-21 c 4,-3 5,-10 6,-14 c 1,-5 -1,-16 -1,-16 c 0,0 22,7 34,7 c 11,0 32,-6 32,-6 c 0,0 -2,10 -1,15 c 1,6 3,12 6,14 c 20,12 45,10 53,22 c 21,30 3,61 -8,86 c -6,14 -6,30 -8,44 c -4,20 -8,40 -11,60" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1207,3200 l 126,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> Front + d="m 1338,3036 c 0,7 -7,14 -14,14 c -8,0 -14,-7 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 8 + d="m 1965,2753 l 164,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1959,2714 l 177,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -1814,7 +1814,7 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1-2-5" - d="m 1983,2826 130,0" + d="m 1983,2826 l 130,0" style="fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> Back + transform="matrix(0.8062,0,0,0.8062,245.3,2743)"> + d="m 1491,3090 c 42,-2 18,-32 89,-32 c 66,-1 49,31 82,31" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1500,3125 l 151,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1510,3201 c -5,-23 -7,-40 -11,-60 c -3,-14 -2,-30 -8,-44 c -10,-26 -25,-61 -8,-87 c 8,-11 33,-10 53,-21 c 4,-3 5,-10 6,-14 c 1,-5 -1,-16 -1,-16 c 0,0 22,7 34,7 c 11,0 32,-6 32,-6 c 0,0 -2,10 -1,15 c 1,6 3,12 6,14 c 20,12 45,10 53,22 c 21,30 3,61 -8,86 c -6,14 -6,30 -8,44 c -4,20 -8,40 -11,60" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1512,3200 l 126,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1643,3036 c 0,7 -7,14 -14,14 c -8,0 -14,-7 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 9 + d="m 1965,2753 l 164,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1959,2714 l 177,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -1990,13 +1990,13 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1-2-5-4-2" - d="m 1983,2826 130,0" + d="m 1983,2826 l 130,0" style="fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> Back + transform="matrix(0.8062,0,0,0.8062,-41.25,2743)"> + d="m 2101,3090 c 42,-2 18,-32 89,-32 c 66,-1 49,31 82,31" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 2110,3125 l 151,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 2120,3201 c -5,-23 -7,-40 -11,-60 c -3,-14 -2,-30 -8,-44 c -10,-26 -25,-61 -8,-87 c 8,-11 33,-10 53,-21 c 4,-3 5,-10 6,-14 c 1,-5 -1,-16 -1,-16 c 0,0 22,7 34,7 c 11,0 32,-6 32,-6 c 0,0 -2,10 -1,15 c 1,6 3,12 6,14 c 20,12 45,10 53,22 c 21,30 3,61 -8,86 c -6,14 -6,30 -8,44 c -4,20 -8,40 -11,60" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 2122,3200 l 126,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> Front + d="m 2253,3036 c 0,7 -7,14 -14,14 c -8,0 -14,-7 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 10 + transform="matrix(0.8062,0,0,0.8062,-318,2743)"> + d="m 879.8,3114 l 155.2,1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 893.5,3189 c -5,-26 -7,-40 -11,-60 c -3,-14 -2,-30 -8,-44 c -10,-26 -25,-61 -8,-87 c 8,-11 33,-10 53,-21 c 4,-3 5,-10 6,-14 c 1,-5 -1,-16 -1,-16 c 0,0 22,7 34,7 c 11,0 32,-6 32,-6 c 0,0 -2,10 -1,15 c 1,6 3,12 6,14 c 20.5,12 45.5,10 53.5,22 c 21,30 3,61 -8,86 c -6,14 -6,30 -8,44 c -4,20 -8,36 -11,60" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 895.5,3188 l 126.5,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> Front @@ -2195,11 +2195,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-9-5-3-0-6-8" - d="m 996.5,2976 25.5,212" + d="m 996.5,2976 l 25.5,212" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="matrix(0.8062,0,0,0.8062,625.4,2763)"> @@ -2285,7 +2285,7 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1-0" - d="m 539,3170 130,1" + d="m 539,3170 l 130,1" style="fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 661,3001 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-7 6,-14 14,-14 c 7,0 13,7 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 634.1,3001 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-7 6,-14 14,-14 c 7,0 13,7 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + transform="matrix(0.8062,0,0,0.8062,656.4,2723)"> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -2413,7 +2413,7 @@ inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2" d="m 794,2250 c 12,12 69,13 73,4" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 747,2353 c 26,0 12,-25 84,-26 c 68,0 60,28 86,27" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 750,2366 l 162,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 767,2463 l 129,1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,693.9,2719)"> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1015,2468 l 126,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 992,2357 l 177,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 997,2371 l 165,-1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,745.4,2723)"> + d="m 2181,1015 c 3,-21.3 -7,-40 -11,-60.8 c -3,-13.5 -2,-30.1 -8,-43.7 c -10,-26 -25,-61.3 -8,-87.3 c 8,-10.4 33,-9.4 53,-20.8 c 4,-3.1 5,-9.4 6,-13.5 c 1,-5.2 -1,-16.7 -1,-16.7 c 0,0 22,7.5 34,7.6 c 11,0.1 32,-6.5 32,-6.5 c 0,0 -2,10.4 -1,15.6 c 1,5.2 3,11.4 6,13.5 c 20,12.5 45,10.4 53,21.8 c 21,30.2 3,61.4 -8,86.3 c -6,13.6 -6,30.2 -8,43.7 c -4,20.8 -14,39.5 -11,60.8" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> Front + d="m 2258,824.8 c 0,7.7 -7,13.9 -14,13.9 c -8,0 -14,-6.2 -14,-13.9 c 0,-7.7 6,-13.9 14,-13.9 c 7,0 13,6.2 14,13.8" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 14 + transform="translate(43.99,913.4)"> @@ -2720,19 +2720,19 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3" - d="m 207,3798 101.5,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 207,3798 l 101.5,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 227.9,3625 l -37.3,14" + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> 1 Front + d="m 270.2,3672 c 0,6 -5.6,11 -11.2,11 c -6.5,0 -11.3,-5 -11.3,-11 c 0,-7 4.8,-11 11.3,-11 c 5.6,0 10.4,4 11.2,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 270.2,3640 c 0,7 -5.6,12 -11.2,12 c -6.5,0 -11.3,-5 -11.3,-12 c 0,-6 4.8,-11 11.3,-11 c 5.6,0 10.4,5 11.2,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 2 3 @@ -2817,25 +2817,25 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-28-0" - d="m 192.8,3739 129,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 192.8,3739 l 129,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,-1358,3088)"> - - - - - - Front - - - - - - - - - - - - - 9 - QQPatternmaking measurements + transform="matrix(0.8062,0,0,0.8062,-154.8,3529)"> + d="m 790.2,5435 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-7 6,-13 14,-13 c 7,0 13,6 14,13" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + transform="matrix(0.8062,0,0,0.8062,73.23,3539)"> @@ -3117,29 +2988,29 @@ id="text8558-1-0-4-9-9-0" y="7399.3989" x="54.927345" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.51089954px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.5109px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" xml:space="preserve">PHistorical &Specialty + transform="matrix(0.8224,0,0,0.8062,-90.26,3067)"> + d="m 408.5,5434 l 164.7,0" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3188,8 +3059,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-8-6-2-3" - d="m 420.8,5550 136.5,1" - style="fill:none;stroke:#dba981;stroke-width:1.48909998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 420.8,5550 l 136.5,1" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8264,0,0,0.8062,109.4,3067)"> + d="m 408.5,5434 l 164.7,0" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3275,8 +3146,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-8-6-2-3-1" - d="m 420.8,5550 136.5,1" - style="fill:none;stroke:#dba981;stroke-width:1.48909998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 420.8,5550 l 136.5,1" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8921,0,0,0.8921,-56.71,2048)"> + d="m 389.5,6443 c 0,0 2.8,-43 -0.9,-64 c -2.3,-13 -12,-24 -13,-37 c -0.9,-11 -0.9,-21 6.1,-33 c 9.9,-29 13,-41 18,-59" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 480.6,6335 c 2,3 -6,45 -14,66 c -4,11 -6,31 -5,42" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 495.6,6253 c -15,4 -19,9 -24,18 c -9,16 -18,40 -7,55 c 6,8 24,13 30,5" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 383.6,6219 c 0,0 11,5 17,5 c 33,2 41,-9 41,-9" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -3375,13 +3246,13 @@ sodipodi:nodetypes="cccscccccccacacccc" inkscape:connector-curvature="0" id="path15557-6" - d="m 351.6,6441 c 2,-13 -1,-29 -2,-42 0,-6 2,-11 0,-19 -9,-8 -17,-27 -17,-40 0,-12 8,-20 11,-33 2,-6 -6,-15 -8,-25 -3,-10 0,-22 5,-23 10,-2 26,-9 35,-16 8,-8 7,-24 7,-24 0,0 1,-5 17,-7 15,-1 43,3 43,3 0,0 -1,11 2,15 11,14 38,16 48,21 15,6 14,12 16,20 4,21 -8,45 -15,62 -6,13 -6,29 -10,43 -3,9 -6,17 -9,26 -2,8 -5,28 -4,37" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 351.6,6441 c 2,-13 -1,-29 -2,-42 c 0,-6 2,-11 0,-19 c -9,-8 -17,-27 -17,-40 c 0,-12 8,-20 11,-33 c 2,-6 -6,-15 -8,-25 c -3,-10 0,-22 5,-23 c 10,-2 26,-9 35,-16 c 8,-8 7,-24 7,-24 c 0,0 1,-5 17,-7 c 15,-1 43,3 43,3 c 0,0 -1,11 2,15 c 11,14 38,16 48,21 c 15,6 14,12 16,20 c 4,21 -8,45 -15,62 c -6,13 -6,29 -10,43 c -3,9 -6,17 -9,26 c -2,8 -5,28 -4,37" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 442.6,6333 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + transform="matrix(0.8062,0,0,0.8062,38.56,2347)"> + d="m 1267,6340 l 165,0" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3461,8 +3332,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-8-6-2-3-1-9" - d="m 1279,6456 137,1" - style="fill:none;stroke:#dba981;stroke-width:1.48909998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1279,6456 l 137,1" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> 5 + d="m 1267,6340 l 165,0" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3548,8 +3419,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-8-6-2-3-1-9-0" - d="m 1279,6456 137,1" - style="fill:none;stroke:#dba981;stroke-width:1.48909998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1279,6456 l 137,1" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8222,0,0,0.8062,1054,2094)"> + style="fill:none;stroke:#aaaaaa;stroke-width:2.9261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8.7783, 2.9261;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 608.1,6771 c -0.5,-25 -3.4,-40 -5.6,-60 c -1.9,-18 -1.2,-37 -6.7,-53 c -3.2,-9 -69.6,-37 -16.6,-77 c 11.1,-9 28.7,-6 40.3,-14 c 11.4,-8 25.3,-11 26.1,-33 c 7.7,-2 18.8,-3 29.9,-3 c 10.2,0 19.3,2 26.2,4 c 0.8,6 6.3,17 12.7,22 c 16.6,16 54.5,20 62.4,31 c 40.3,44 -3.9,51 -18.2,71 c -6.3,13 -5.5,37 -7.1,49 c -3.9,20 -8,45 -7.5,68" + style="fill:none;stroke:#dba981;stroke-width:3.7209;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 607.6,6773 l 136.5,1" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3647,17 +3518,17 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-8-6-2-3-7-6-31-8-2-4-2" - d="m 675.4,6548 -0.6,226" - style="fill:none;stroke:#dba981;stroke-width:1.48819995;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 675.4,6548 l -0.6,226" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 675.3,6609 l 85.7,0" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3665,7 +3536,7 @@ sodipodi:nodetypes="ccc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7-3-2-4-0-3-6-0" - d="m 763,6654 c -0.3,24 -70,-32 -86.5,-46 17.4,-17 44,-49 58.8,-42" + d="m 763,6654 c -0.3,24 -70,-32 -86.5,-46 c 17.4,-17 44,-49 58.8,-42" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="matrix(0.8302,0,0,0.8062,889.2,2086)"> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1064,6777 c -1,-25 -4,-40 -6,-60 c -2,-18 -1,-37 -6,-53 c -4,-9 -70.1,-37 -17,-77 c 11,-9 29,-6 40,-14 c 12,-8 25,-11 26,-33 c 8,-2 19,-3 30,-3 c 10,0 19,2 26,4 c 1,6 7,17 13,22 c 17,16 55,20 63,31 c 40,44 -4,51 -19,71 c -6,13 -5,37 -7,49 c -4,20 -8,45 -7,68" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1063,6779 l 137,1" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3756,17 +3627,17 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-8-6-2-3-7-6-31-8-2-4-2-3" - d="m 1131,6554 0,226" - style="fill:none;stroke:#dba981;stroke-width:1.48819995;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1131,6554 l 0,226" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1131,6615 l 86,0" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3781,10 +3652,10 @@ inkscape:connector-curvature="0" id="path10713-0-7-06" d="m 1184,6571 c 24,9 37,56 35,89" - style="fill:none;stroke:#aaaaaa;stroke-width:2.92610002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8.7783, 2.9261;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#aaaaaa;stroke-width:2.9261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8.7783, 2.9261;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8343,0,0,0.8062,869.1,2093)"> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 554.5,6770 c -0.5,-25 -3.4,-40 -5.6,-60 c -1.9,-18 -1.2,-37 -6.7,-53 c -3.2,-9 -69.6,-37 -16.6,-77 c 11.1,-9 28.7,-6 40.3,-14 c 11.4,-8 25.3,-11 26.1,-33 c 7.7,-2 18.8,-3 29.9,-3 c 10.2,0 19.3,2 26.2,4 c 0.8,6 6.3,17 12.7,22 c 16.6,16 54.5,20 62.4,31 c 40.3,44 -3.9,51 -18.2,71 c -6.3,13 -5.5,37 -7.1,49 c -3.9,20 -8,45 -7.5,68" + style="fill:none;stroke:#dba981;stroke-width:3.7209;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 554,6772 l 136.5,1" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3856,17 +3727,17 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-8-6-2-3-7-6-31-8-2-4" - d="m 621.8,6547 -0.6,226" - style="fill:none;stroke:#dba981;stroke-width:1.48819995;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 621.8,6547 l -0.6,226" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 621.7,6608 l 85.7,0" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3874,14 +3745,14 @@ sodipodi:nodetypes="ccc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7-3-2-4-0-3-6" - d="m 705.6,6657 c -2.8,23 -66.2,-78 -82,-109 16.8,0 36.2,7 58.1,17" + d="m 705.6,6657 c -2.8,23 -66.2,-78 -82,-109 c 16.8,0 36.2,7 58.1,17" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + style="fill:none;stroke:#aaaaaa;stroke-width:2.9261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:8.7783, 2.9261;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8921,0,0,0.8921,-63.91,2077)"> + d="m 702,6297 c 2,3 -6,45 -14,66 c -4,11 -6,31 -5,42" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 717,6215 c -15,4 -19,9 -24,18 c -9,16 -18,40 -7,55 c 6,8 24,13 30,5" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 605,6181 c 0,0 11,5 17,5 c 33,2 41,-9 41,-9" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -3979,17 +3850,17 @@ sodipodi:nodetypes="cccscccccccacacccc" inkscape:connector-curvature="0" id="path15557-6-3" - d="m 573,6403 c 2,-13 -1,-29 -2,-42 0,-6 2,-11 0,-19 -9,-8 -17,-27 -17,-40 0,-12 8,-20 11,-33 2,-6 -6,-15 -8,-25 -3,-10 0,-22 5,-23 10,-2 26,-9 35,-16 8,-8 7,-24 7,-24 0,0 1,-5 17,-7 15,-1 43,3 43,3 0,0 -1,11 2,15 11,14 38,16 48,21 15,6 14,12 16,20 4,21 -8,45 -15,62 -6,13 -6,29 -10,43 -3,9 -6,17 -9,26 -2,8 -5,28 -4,37" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 573,6403 c 2,-13 -1,-29 -2,-42 c 0,-6 2,-11 0,-19 c -9,-8 -17,-27 -17,-40 c 0,-12 8,-20 11,-33 c 2,-6 -6,-15 -8,-25 c -3,-10 0,-22 5,-23 c 10,-2 26,-9 35,-16 c 8,-8 7,-24 7,-24 c 0,0 1,-5 17,-7 c 15,-1 43,3 43,3 c 0,0 -1,11 2,15 c 11,14 38,16 48,21 c 15,6 14,12 16,20 c 4,21 -8,45 -15,62 c -6,13 -6,29 -10,43 c -3,9 -6,17 -9,26 c -2,8 -5,28 -4,37" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 574,6367 l 6,-1 c 23,-3 45,-1 69,1 l 36,4" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -3997,8 +3868,8 @@ sodipodi:nodetypes="csssc" inkscape:connector-curvature="0" id="path4050-8-0-5-3-4-0-7-3-0-68-5-6-5-9-3-0-9-0-4-8-6-7" - d="m 663,6293 c 0,8 -7,14 -14,14 -8,0 -14,-6 -14,-14 0,-8 6,-14 14,-14 7,0 13,6 14,14" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.39240003;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" /> + d="m 663,6293 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 613.4,6406 c 0,0 2.8,-43 -0.9,-64 c -2.3,-13 -12,-24 -13,-37 c -0.9,-11 -0.9,-21 6.1,-33 c 9.9,-29 13,-41 18,-59" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,321.9,3071)"> + d="m 408.5,5434 l 164.7,0" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.582;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.746, 1.582;stroke-dashoffset:0;stroke-opacity:1" /> @@ -4071,8 +3942,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-8-6-2-3-1-6" - d="m 420.8,5550 136.5,1" - style="fill:none;stroke:#dba981;stroke-width:1.48909998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 420.8,5550 l 136.5,1" + style="fill:none;stroke:#dba981;stroke-width:1.4891;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4674, 1.4891;stroke-dashoffset:0;stroke-opacity:1" /> 2 + d="m 1996,6571 l 103,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 2000,6596 l 101,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1993,6474 l 123,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 2103,7086 l -1,-74" + style="fill:none;stroke:#dba981;stroke-width:3.108;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9.324, 3.108;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> @@ -4242,7 +4113,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-2-36-7-2-2-02-4-8" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5202px;line-height:125%;font-family:'Nimbus Sans L';-inkscape-font-specification:'Nimbus Sans L';text-align:start;writing-mode:lr-tb;text-anchor:start" /> CCIndentationIndentation + style="font-size:51.5968px" /> + transform="matrix(0.8062,0,0,0.8062,284.8,2671)"> + style="opacity:0.3;fill:none;stroke:#000000;stroke-width:2.6829;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.3658, 2.6829;stroke-dashoffset:0;stroke-opacity:1;marker-start:none;marker-end:none" /> 15 + style="fill:none;stroke:#000000;stroke-width:2.683;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none;marker-end:none" /> + style="opacity:0.3;fill:none;stroke:#000000;stroke-width:2.6829;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.3658, 2.6829;stroke-dashoffset:0;stroke-opacity:1;marker-start:none;marker-end:none" /> + style="fill:none;stroke:#000000;stroke-width:2.6829;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none;marker-end:none" /> + transform="matrix(0.8062,0,0,0.8062,278.7,2679)"> + transform="matrix(0.8062,0,0,0.8062,289.9,3536)"> @@ -4720,146 +4591,11 @@ y="5752.3369">3 - - - - Front - - - - - - - - - - - 7 - - - 8 - + transform="matrix(0.8062,0,0,0.8062,10.68,2732)"> + d="m 344.5,3940 c 3,-16 12,-36 20,-52 c 3,-8 9,-16 9,-24 c 2,-19 -8,-37 -11,-57 c -4,-20 -6,-33 -11.5,-52" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -4898,22 +4634,22 @@ inkscape:connector-curvature="0" id="path5925-1-0-5" d="m 348.8,3944 c -2.7,7 -18.2,14 -20.6,12" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> 2 1 + style="display:inline;fill:none;stroke:#7dc832;stroke-width:2.683;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="matrix(0.8062,0,0,0.8062,39.63,2724)"> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> 5 + style="display:inline;fill:none;stroke:#7dc832;stroke-width:2.6829;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none;marker-end:none" /> @@ -5162,16 +4898,16 @@ sodipodi:nodetypes="cccccccscccccccccscccc" inkscape:connector-curvature="0" id="path16196" - d="m 1718,616.9 c -5,-14.6 -9,-29.2 -11,-47.9 -2,-20.7 4,-40.5 3,-60.3 -2,-21.8 -18,-38.4 -19,-60.2 0,-10.4 9,-24.1 8,-34.5 0,-11.5 -1,-33.3 -2,-44.8 0,-12.5 2,-19.8 0,-28.1 -10,-8.3 -18,-21.8 -18,-35.4 0,-13.5 16,-31.2 20,-38.5 2,-6.2 30,-55.2 28,-64.5 1,1 -3,-17.4 -5,-22.6 17,0.2 30,-13.7 47,-22 0,7.3 8,23.7 11,26.9 8,15.6 25,47.8 30,72.8 7,20.9 2,35.4 -1,53.1 -3,18.8 -14,40.6 -17,54.2 -3,11.4 -8,30.1 -7,41.6 18,43.1 39,79.9 39,109.3 0,20.8 -18,45.7 -18,45.7 l 0,12.5 c 0,0 1,23.9 1,42.7 z" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1718,616.9 c -5,-14.6 -9,-29.2 -11,-47.9 c -2,-20.7 4,-40.5 3,-60.3 c -2,-21.8 -18,-38.4 -19,-60.2 c 0,-10.4 9,-24.1 8,-34.5 c 0,-11.5 -1,-33.3 -2,-44.8 c 0,-12.5 2,-19.8 0,-28.1 c -10,-8.3 -18,-21.8 -18,-35.4 c 0,-13.5 16,-31.2 20,-38.5 c 2,-6.2 30,-55.2 28,-64.5 c 1,1 -3,-17.4 -5,-22.6 c 17,0.2 30,-13.7 47,-22 c 0,7.3 8,23.7 11,26.9 c 8,15.6 25,47.8 30,72.8 c 7,20.9 2,35.4 -1,53.1 c -3,18.8 -14,40.6 -17,54.2 c -3,11.4 -8,30.1 -7,41.6 c 18,43.1 39,79.9 39,109.3 c 0,20.8 -18,45.7 -18,45.7 l 0,12.5 c 0,0 1,23.9 1,42.7 z" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> Back @@ -5313,35 +5049,35 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3833-4-0-8-2-6-6-9-6-7-1-9-9-4-7-9-6" - d="M 1390,207.2 1436,153" + d="M 1390,207.2 L 1436,153" style="fill:none;stroke:#dba981;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9, 3;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1511,500.6 c 5,-2.1 10,-3.1 17,-10.5 c 3,3.2 5,7.4 12,9.5" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -5349,49 +5085,49 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-0-9-7" - d="m 1446,251.8 165,-0.1" - style="display:inline;fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1446,251.8 l 165,-0.1" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="M 1464,345.1 L 1592,345" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1424,437 l 201,0.5" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1495,206 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 1 + d="m 1495,302.1 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 1495,398.5 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + transform="matrix(0.8062,0,0,0.8062,578.9,2717)"> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1507,3809 l 0,142" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1479,3733 c -1,54 7,72 26,74 c 21,1 27,-26 24,-63 c 0,-9 2,-35 -22,-32 c -18,1 -28,8 -28,21 z" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1474,3783 l 1,-82" + style="fill:none;stroke:#dba981;stroke-width:3.696;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:11.088, 3.696;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1534,3782 l -1,-80" + style="fill:none;stroke:#dba981;stroke-width:3.696;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:11.088, 3.696;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1536,3672 c 36,57 35,131 25,180 c -6,32 -24,64 -23,94" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1566,3812 c -27,-2 -48,2 -75,0 c -16,-10 -55,-42 -55,-42" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,574.6,2717)"> + d="m 1232,3709 l 104,0" + style="fill:none;stroke:#dba981;stroke-width:3.696;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:11.088, 3.696;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1233,3804 l 105,1" + style="fill:none;stroke:#dba981;stroke-width:3.696;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:11.088, 3.696;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1235,3807 l 0,142" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1207,3731 c -1,54 7,72 26,74 c 21,1 27,-26 24,-63 c 0,-9 2,-35 -22,-32 c -18,1 -28,8 -28,21 z" + style="fill:none;stroke:#000000;stroke-width:2.683;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1264,3670 c 36,57 35,131 25,180 c -6,32 -24,64 -23,94" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1294,3810 c -27,-2 -48,2 -75,0 c -16,-10 -55,-42 -55,-42" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -5638,7 +5374,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-2-36-3-6-8" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> 19 20 + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> 8 + style="display:inline;fill:none;stroke:#7dc832;stroke-width:2.6829;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:none;marker-end:none" /> + transform="matrix(0.8062,0,0,0.8062,90.65,3145)"> @@ -5852,7 +5588,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-5-2-4-1" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> 4 @@ -5911,7 +5647,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-5-2-4-1-7" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + transform="matrix(0.8062,0,0,0.8062,-36.07,3236)"> @@ -5973,7 +5709,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-5-2-4-1-8" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> 7 @@ -6003,7 +5739,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-5-2-4-1-8-2" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + d="m 1786,4111 c 10,41 77,44 106,17 c 10,-10 15,-25 18,-38" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="matrix(0.8062,0,0,0.8062,227.6,2812)"> + transform="matrix(0.8062,0,0,0.8062,82.38,2812)"> 3 + transform="matrix(0.8062,0,0,0.8062,-62.42,2351)"> @@ -6220,7 +5956,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-7-8-9-5-5-6-4" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> OMen &Tailoring + transform="matrix(0.8464,0,0,0.8062,166.6,2355)"> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 704.9,5793 c -0.2,-26 3,-44 8.2,-29 c -3.3,-6 -7,-15 -4.5,-26 c -0.5,-24 -2.2,-41 -4.4,-61 c -1.9,-18 -1.2,-37 -6.7,-53 c -3.1,-9 -69.4,-36 -16.5,-77 c 11,-8 28.4,-5 40.2,-14 c 11.8,-8 25.2,-10 26,-33 c 5.6,4 17.4,8 28.4,8 c 10.3,0 17.9,-2 27.7,-6 c 0.7,5 6.3,16 12.6,22 c 16.5,15 54.4,19 62.3,30 c 40.2,44 -3.9,51 -18.1,71 c -6.4,13 -5.6,37 -7.1,49 c -4,20 -5.3,45 -8,66 c 1.8,6 -0.5,18 -1.8,24 c 1.8,-16 7.7,21 8.3,28" + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 709.4,5739 l 136.1,1" + style="fill:none;stroke:#dba981;stroke-width:1.4854;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4561, 1.4854;stroke-dashoffset:0;stroke-opacity:1" /> @@ -6350,7 +6086,7 @@ sodipodi:nodetypes="cc" /> + transform="matrix(0.8303,0,0,0.8062,743.5,2363)"> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 965.9,5794 c -0.2,-26 3,-44 8.2,-29 c -3.3,-6 -7,-15 -4.5,-26 c -0.5,-24 -2.2,-41 -4.4,-61 c -1.9,-18 -1.2,-37 -6.7,-53 c -3.1,-9 -69.4,-36 -16.5,-77 c 11,-8 28.4,-5 40.2,-14 c 11.8,-8 24.8,-10 25.8,-33 c 6,4 18,8 29,8 c 10,0 18,-2 27,-6 c 1,5 7,16 13,22 c 16,15 54,19 62,30 c 40,44 -4,51 -18,71 c -6,13 -5,37 -7,49 c -4,20 -5,45 -8,66 c 2,6 0,18 -2,24 c 2,-16 8,21 9,28" + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 970.4,5740 l 136.6,1" + style="fill:none;stroke:#dba981;stroke-width:1.4854;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4561, 1.4854;stroke-dashoffset:0;stroke-opacity:1" /> @@ -6439,11 +6175,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-9-5-3-0-6-1-6-8-3" - d="m 1082,5741 0,41" + d="m 1082,5741 l 0,41" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="matrix(0.8222,0,0,0.8062,808.7,2357)"> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1232,5796 c 0,-6 1,-22 2,-33 c 2,-11 4,-19 3,-23 c 0,-25 -3,-40 -6,-60 c -1,-18 -1,-37 -6,-53 c -3,-9 -70,-37 -17,-77 c 11,-9 29,-6 40,-14 c 12,-8 26,-11 27,-33 c 7,-2 18,-3 29,-3 c 11,0 20,2 27,4 c 0,6 6,17 12,22 c 17,16 55,20 63,31 c 40,44 -4,51 -18,71 c -7,13 -6,37 -8,49 c -3,20 -8,45 -7,68 c 0,7 2,14 3,22 c 2,9 2,21 3,28" + style="fill:none;stroke:#dba981;stroke-width:3.7209;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1237,5742 l 136,1" + style="fill:none;stroke:#dba981;stroke-width:1.488;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.464, 1.488;stroke-dashoffset:0;stroke-opacity:1" /> @@ -6549,11 +6285,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-9-5-3-0-6-1-6-8-3-8" - d="m 1349,5745 0,41" + d="m 1349,5745 l 0,41" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="matrix(0.8062,0,0,0.8062,-70.46,2354)"> @@ -6616,7 +6352,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-7-8-9-5-5-6-4-1" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> 11 @@ -6646,7 +6382,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-7-8-9-5-5-6-4-1-4" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + transform="matrix(0.8062,0,0,0.8062,-75.26,2357)"> @@ -6705,7 +6441,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-7-8-9-5-5-6-4-6" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> 13 @@ -6735,7 +6471,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-7-8-9-5-5-6-4-4" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + transform="matrix(0.8062,0,0,0.8062,-65.67,2358)"> @@ -6794,7 +6530,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-7-8-9-5-5-6-4-6-6" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + transform="matrix(0.8062,0,0,0.8062,450.6,2358)"> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 704.9,5793 c -0.2,-26 3,-44 8.2,-29 c -3.3,-6 -7,-15 -4.5,-26 c -0.5,-24 -2.2,-41 -4.4,-61 c -1.9,-18 -1.2,-37 -6.7,-53 c -3.1,-9 -69.4,-36 -16.5,-77 c 11,-8 28.4,-5 40.2,-14 c 11.8,-8 25.2,-10 26,-33 c 5.6,4 17.4,8 28.4,8 c 10.3,0 17.9,-2 27.7,-6 c 0.7,5 6.3,16 12.6,22 c 16.5,15 54.4,19 62.3,30 c 40.2,44 -3.9,51 -18.1,71 c -6.4,13 -5.6,37 -7.1,49 c -4,20 -5.3,45 -8,66 c 1.8,6 -0.5,18 -1.8,24 c 1.8,-16 7.7,21 8.3,28" + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 709.4,5739 l 136.1,1" + style="fill:none;stroke:#dba981;stroke-width:1.4854;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4561, 1.4854;stroke-dashoffset:0;stroke-opacity:1" /> @@ -6873,7 +6609,7 @@ sodipodi:nodetypes="cc" /> + transform="matrix(0.8342,0,0,0.8062,255.2,2356)"> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.581;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.743, 1.581;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1232,5796 c 0,-6 1,-22 2,-33 c 2,-11 4,-19 3,-23 c 0,-25 -3,-40 -6,-60 c -1,-18 -1,-37 -6,-53 c -3,-9 -70,-37 -17,-77 c 11,-9 29,-6 40,-14 c 12,-8 26,-11 27,-33 c 7,-2 18,-3 29,-3 c 11,0 20,2 27,4 c 0,6 6,17 12,22 c 17,16 55,20 63,31 c 40,44 -4,51 -18,71 c -7,13 -6,37 -8,49 c -3,20 -8,45 -7,68 c 0,7 2,14 3,22 c 2,9 2,21 3,28" + style="fill:none;stroke:#dba981;stroke-width:3.7209;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1237,5742 l 136,1" + style="fill:none;stroke:#dba981;stroke-width:1.4882;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4646, 1.4882;stroke-dashoffset:0;stroke-opacity:1" /> @@ -6972,7 +6708,7 @@ sodipodi:nodetypes="cc" /> + transform="matrix(0.8263,0,0,0.8062,-63.13,2406)"> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 351.4,5730 c 0,-26 3,-44 8,-29 c -3,-6 -7,-15 -4,-26 c -1,-24 -3,-41 -5,-61 c -2,-18 -1,-37 -6,-53 c -4,-9 -70,-36 -17,-77 c 11,-8 28,-5 40,-14 c 12,-8 25,-10 26,-33 c 6,4 18,8 29,8 c 10,0 18,-2 27,-6 c 1,5 7,16 13,22 c 16,15 53.9,19 61.9,30 c 40,44 -4,51 -17.9,71 c -6,13 -5,37 -7,49 c -4,20 -5,45 -8,66 c 2,6 0,18 -2,24 c 2,-16 8,21 9,28" + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 355.4,5676 l 137,1" + style="fill:none;stroke:#dba981;stroke-width:1.4854;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4561, 1.4854;stroke-dashoffset:0;stroke-opacity:1" /> @@ -7061,7 +6797,7 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-9-5-3-0-6-1-6-0-1" - d="m 459.4,5458 -34,219" + d="m 459.4,5458 l -34,219" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> 1 @@ -7111,47 +6847,47 @@ sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path3874-7-8-0-3-9-1-5" - d="m 285.9,1948 6.8,-1 29.4,-1 48.8,2 52.1,6" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 285.9,1948 l 6.8,-1 l 29.4,-1 l 48.8,2 l 52.1,6" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 271.2,1883 c 0,0 10.2,-7 15.8,-10 c 6.8,-2 14.8,-3 21.5,-3 c 22.7,-1 45.4,-2 66.9,3 c 20.4,5 45.3,25 58.9,26" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 267.8,1904 c 0,0 17,-2 24.9,-3 c 23.8,-2 46.4,-3 70.2,0 c 23.8,2 51,9 69.1,13" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -7159,41 +6895,41 @@ sodipodi:nodetypes="cac" inkscape:connector-curvature="0" id="path3992-4-9-6-1-0-0-1-02-4-0" - d="m 382.2,1767 c 3.4,11 1.1,10 4.5,14 11.4,13 35.1,19 49.9,22" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 382.2,1767 c 3.4,11 1.1,10 4.5,14 c 11.4,13 35.1,19 49.9,22" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> 18 + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,-322.5,2330)"> @@ -7357,23 +7093,23 @@ sodipodi:nodetypes="csc" inkscape:connector-curvature="0" id="path2993-6-7-5-5-3-7-9" - d="m 1594,6653 c 2,3 -7,51 -16,75 -4,12 -6,35 -5,47" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1594,6653 c 2,3 -7,51 -16,75 c -4,12 -6,35 -5,47" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1611,6560 c -17,5 -21,10 -27,21 c -10,18 -20,45 -8,62 c 7,9 27,15 34,6" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1484,6522 c 0,0 13,5 20,5 c 37,3 46,-10 46,-10" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -7381,32 +7117,32 @@ sodipodi:nodetypes="cccscccccccacacccc" inkscape:connector-curvature="0" id="path15557-4-6-8-5" - d="m 1448,6773 c 2,-15 -1,-33 -2,-47 0,-7 2,-13 0,-22 -10,-9 -19,-31 -19,-45 0,-14 9,-23 12,-38 2,-6 -7,-17 -9,-28 -3,-11 0,-25 6,-26 11,-2 29,-10 39,-18 9,-9 8,-27 8,-27 0,0 1,-6 19,-8 17,-1 49,3 49,3 0,0 -1,13 2,17 13,16 43,18 55,24 17,7 16,14 18,23 4,23 -9,51 -17,70 -7,15 -7,33 -11,49 -4,10 -7,19 -11,29 -2,9 -5,32 -4,42" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1448,6773 c 2,-15 -1,-33 -2,-47 c 0,-7 2,-13 0,-22 c -10,-9 -19,-31 -19,-45 c 0,-14 9,-23 12,-38 c 2,-6 -7,-17 -9,-28 c -3,-11 0,-25 6,-26 c 11,-2 29,-10 39,-18 c 9,-9 8,-27 8,-27 c 0,0 1,-6 19,-8 c 17,-1 49,3 49,3 c 0,0 -1,13 2,17 c 13,16 43,18 55,24 c 17,7 16,14 18,23 c 4,23 -9,51 -17,70 c -7,15 -7,33 -11,49 c -4,10 -7,19 -11,29 c -2,9 -5,32 -4,42" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1449,6732 l 7,-1 c 26,-3 51,-1 78,1 l 41,5" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1601,6581 c 0,9 -8,15 -16,15 c -9,0 -16,-6 -16,-15 c 0,-10 7,-16 16,-16 c 8,0 15,6 16,16" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.5776;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> @@ -7444,11 +7180,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3833-4-0-8-2-6-6-9" - d="m 226.6,432.8 289.9,-0.3" + d="m 226.6,432.8 l 289.9,-0.3" style="fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> @@ -7456,11 +7192,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3833-4-0-8-2-6-35" - d="m 122.7,212.5 370.9,-0.1" + d="m 122.7,212.5 l 370.9,-0.1" style="fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> @@ -7468,7 +7204,7 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-8-3-9-5-7-2-4" - d="M 839.7,966.5 839.5,225.9" + d="M 839.7,966.5 L 839.5,225.9" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> @@ -7512,13 +7248,13 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-8-3-9-5-7-2-4-60-0" - d="m 729.2,966.5 0,-635.2" + d="m 729.2,966.5 l 0,-635.2" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> 9 16 @@ -7775,11 +7511,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3833-4-0-8-2-6-7-4" - d="m 330.9,730.8 130.8,0.5" + d="m 330.9,730.8 l 130.8,0.5" style="fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> @@ -7813,11 +7549,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3833-4-0-8-2-6-1-7" - d="M 89.85,90.37 527.2,87.98" + d="M 89.85,90.37 L 527.2,87.98" style="opacity:0.5;fill:none;stroke:#dba981;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 2;stroke-dashoffset:0;stroke-opacity:1" /> 1 @@ -7912,7 +7648,7 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-8-3-9-0-5-3" - d="m 586.9,967.5 -0.5,-56.1" + d="m 586.9,967.5 l -0.5,-56.1" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 538.9,234.1 c -13,3 -17,-5 -24,-9 c -8,-4 -12.4,-12.8 -22,-13" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 494.5,262 c -1,42 6,57 21,58 c 17,1 22,-20 20,-49 c 0,-7 1,-27 -18,-25 c -15,1 -23,6 -23,16 z" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 517.6,321.2 l -0.2,192.7" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -8027,7 +7763,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-2-3-2-1-8" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + transform="matrix(0.8544,0,0,0.8062,-1227,2114)"> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.578;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.734, 1.578;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 2019,6100 c 0,-26 3,-44 8,-29 c -3,-6 -7,-15 -4,-26 c -1,-24 -3,-41 -5,-61 c -2,-18 -1,-37 -6,-53 c -4,-9 -70,-36 -17,-77 c 11,-8 28,-5 40,-14 c 12,-8 25,-10 26,-33 c 6,4 18,8 29,8 c 10,0 18,-2 27,-6 c 1,5 7,16 13,22 c 16,15 54,19 62,30 c 40,44 -4,51 -18,71 c -6,13 -5,37 -7,49 c -4,20 -5,45 -8,66 c 2,6 0,18 -2,24 c 2,-16 8,21 9,28" + style="fill:none;stroke:#dba981;stroke-width:3.7138;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 2023,6046 l 137,1" + style="fill:none;stroke:#dba981;stroke-width:1.4854;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.4561, 1.4854;stroke-dashoffset:0;stroke-opacity:1" /> @@ -8131,17 +7867,17 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-9-5-3-0-6-1-6-0-1-0" - d="m 2127,5828 1,218" + d="m 2127,5828 l 1,218" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> @@ -8156,7 +7892,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-7-8-9-5-5-6-4-29-3-4-0" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> 2 - - - - - - - - - - - 18 - - - - 19 - - - - 20 - - + + + + + + + + + + 18 + + + + 19 + + + + 20 + + d="m 920.3,2234 l 1.6,8 c 0,5 0.8,4 -3.2,7" + style="display:inline;fill:none;stroke:#dba981;stroke-width:2.4185;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -8337,17 +8066,17 @@ sodipodi:nodetypes="csasc" inkscape:connector-curvature="0" id="path2993-6-7-7" - d="m 328,394.7 c 2,3 -6,45 -14,66 -4,11 -8,20 -7,31 1,13 7,25 13,37 11,22 22,71 19,71" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 328,394.7 c 2,3 -6,45 -14,66 c -4,11 -8,20 -7,31 c 1,13 7,25 13,37 c 11,22 22,71 19,71" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -8355,11 +8084,11 @@ sodipodi:nodetypes="caac" inkscape:connector-curvature="0" id="path3817-6-4-2" - d="m 338,393.7 c -4,2 -16,0 -24,-2 -12,-4 -23,-13 -36,-17 -13,-3 -24,-1 -41,-3" - style="fill:none;stroke:#dba981;stroke-width:0.89429998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.6829, 0.8943;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 338,393.7 c -4,2 -16,0 -24,-2 c -12,-4 -23,-13 -36,-17 c -13,-3 -24,-1 -41,-3" + style="fill:none;stroke:#dba981;stroke-width:0.8943;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.6829, 0.8943;stroke-dashoffset:0;stroke-opacity:1" /> @@ -8377,7 +8106,7 @@ sodipodi:nodetypes="cc" /> @@ -8385,34 +8114,34 @@ sodipodi:nodetypes="caac" inkscape:connector-curvature="0" id="path3009-0-7-2" - d="m 343,312.7 c -15,4 -19,9 -24,18 -9,16 -18,40 -7,55 6,8 24,13 30,5" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 343,312.7 c -15,4 -19,9 -24,18 c -9,16 -18,40 -7,55 c 6,8 24,13 30,5" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 231,266.7 c 0,0 11,5 17,5 c 33,2 41,-9 41,-9" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 271.5,376.3 c 0,8 -6,14 -14,14 c -7,0 -13,-6 -13,-14 c 0,-7 6,-13 13,-13 c 8,0 14,6 14,13" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + d="m 271.5,406.3 c 0,8 -6,14 -14,14 c -7,0 -13,-6 -13,-14 c 0,-7 6,-13 13,-13 c 8,0 14,6 14,13" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + d="m 271,438.3 c 0,7 -6,13 -13,13 c -7,0 -13,-6 -13,-13 c 0,-8 6,-14 13,-14 c 7,0 13,6 13,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + d="m 271.5,508.3 c 0,8 -6,14 -13,14 c -7,0 -14,-6 -14,-14 c 0,-7 7,-13 14,-13 c 7,0 13,6 13,13" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> 25 + d="m 287.5,311.2 c 0,7.4 -6,13.4 -13,13.4 c -8,0 -14,-6 -14,-13.4 c 0,-7.4 6,-13.4 14,-13.4 c 7,0 13,6 13,13.3" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> + d="m 529.2,259.3 c 0.5,2.7 1.5,11.8 2.2,29.1 c 6.6,36.1 26.5,55.8 24,120.9 c -0.5,32.3 -11.6,75.3 -8.3,95.7 c 5.8,35.3 27.2,52 26.5,105.4" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 455,399.9 c 5,42 24,68.1 20,103.7 c -2,19.5 -17,28.8 -19,111.5" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -8596,21 +8325,21 @@ inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> + d="m 493,270 c 2,10.8 5,19.9 0,28.3 c -6,12.7 -23,21.1 -35,24.2" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -8641,8 +8370,8 @@ inkscape:connector-curvature="0" sodipodi:nodetypes="cc" /> + d="m 532.1,476.4 c 0,7.4 -6,13.5 -14,13.5 c -7,0 -13,-6.1 -13,-13.5 c 0,-7.4 6,-13.4 13,-13.4 c 8,0 14,6 14,13.4" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.3414;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" /> - - - - - - - - Front - - - - - - - 5 - - + d="M 471.2,238.2 L 471,483.9" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -8910,8 +8528,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-81" - d="m 405.3,484 126,0" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 405.3,484 l 126,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> Back @@ -8939,11 +8557,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7-0" - d="m 559.3,291 -90,0" + d="m 559.3,291 l -90,0" style="fill:none;stroke:#7dc832;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 523.3,336 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 11 + d="m 222.4,245 l 0.2,233.7" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -9029,8 +8647,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-0" - d="m 159.5,478 126,0" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 159.5,478 l 126,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> Front + d="m 196.7,318 c 0,7 -7,14 -14,14 c -8,0 -14,-7 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 196.7,284 c 0,8 -7,14 -14,14 c -8,0 -14,-6 -14,-14 c 0,-8 6,-14 14,-14 c 7,0 13,6 14,14" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.3924;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 6 @@ -9096,18 +8714,18 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-28-0-7" - d="m 144.1,405 154.5,0" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 144.1,405 l 154.5,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,5.79,2787)"> @@ -9456,7 +9074,7 @@ inkscape:connector-curvature="0" id="path7494-1-6-3-5-8-3-1-1-8-7-7" d="m 832,4408 c 7,11 80,-46 74,-55" - style="fill:none;stroke:#000000;stroke-width:2.68300009;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" + style="fill:none;stroke:#000000;stroke-width:2.683;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" sodipodi:nodetypes="cc" /> + transform="translate(26.54,585.4)"> + d="m 172.3,5595 l 100,0" + style="fill:none;stroke:#dba981;stroke-width:1.6124;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.8372, 1.6124;stroke-dashoffset:0;stroke-opacity:1" /> 1 + transform="translate(69.44,582.7)"> + d="m 918,5843 l 71,0" + style="fill:none;stroke:#dba981;stroke-width:2.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6.0465, 2.0155;stroke-dashoffset:0;stroke-opacity:1" /> @@ -9626,11 +9244,11 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-5-2-4-5-0" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> @@ -9670,14 +9288,14 @@ sodipodi:nodetypes="ccccccccccccccccccccccccccccscccccccccccccccccc" inkscape:connector-curvature="0" id="path8426-8-4-0-4-0-8" - d="m 429,4208 c 1,9 6,16 10,23 7,17 17,32 21,50 5,19 7,39 6,59 -1,24 -7,48 -10,71 -5,25 -10,50 -14,75 -2,12 -6,25 -6,38 1,8 5,16 6,25 2,16 3,33 2,49 -1,15 -4,29 -5,43 -2,15 -6.4,34 -6.4,49 1,7 4.7,12 4.7,12 l -0.9,9 c 0.1,18 14.2,42 11.6,71 -10,12 -14,23 -31,11 -5,-6 -7,-18 -10,-27 -2,-10 -1.6,-43 -1,-53 l -4,-12 c 0,0 1,-5 1,-10 -1.8,-23 -15,-64 -17,-86 -3,-18 1,-37 0,-55 -1,-10 -3,-20 -3,-29 -3,-33 -2,-66 -6,-99 -3,-19 -10,-60 -10,-60 0,0 -6,38 -9,58 -4,33 -8,67 -10,100 -1,10 -3,19 -4,29 -1,19 3,37 0,55 -2,22 -11,43 -13,65 -1,11 -1,33 -1,33 l -1,15 c -4,13 -5,41 -5,49 -4,9 -5,21 -10,26 -22,12 -22,1 -32,-10 -10,-12 1,-31 6,-50 l 3,-24 c 0,0 2,-14 3,-22 0,-15 -1,-30 -3,-46 -1,-14 -4,-28 -5,-42 -1,-17 0,-34 2,-50 2,-8 5,-16 6,-25 0,-13 -4,-25 -6,-38 -4,-25 -9,-49 -14,-74 -3,-24 -9,-47 -10,-71 0,-20 1,-41 6,-60 4,-17 14,-33 21,-49 4,-8 9,-15 10,-23" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 429,4208 c 1,9 6,16 10,23 c 7,17 17,32 21,50 c 5,19 7,39 6,59 c -1,24 -7,48 -10,71 c -5,25 -10,50 -14,75 c -2,12 -6,25 -6,38 c 1,8 5,16 6,25 c 2,16 3,33 2,49 c -1,15 -4,29 -5,43 c -2,15 -6.4,34 -6.4,49 c 1,7 4.7,12 4.7,12 l -0.9,9 c 0.1,18 14.2,42 11.6,71 c -10,12 -14,23 -31,11 c -5,-6 -7,-18 -10,-27 c -2,-10 -1.6,-43 -1,-53 l -4,-12 c 0,0 1,-5 1,-10 c -1.8,-23 -15,-64 -17,-86 c -3,-18 1,-37 0,-55 c -1,-10 -3,-20 -3,-29 c -3,-33 -2,-66 -6,-99 c -3,-19 -10,-60 -10,-60 c 0,0 -6,38 -9,58 c -4,33 -8,67 -10,100 c -1,10 -3,19 -4,29 c -1,19 3,37 0,55 c -2,22 -11,43 -13,65 c -1,11 -1,33 -1,33 l -1,15 c -4,13 -5,41 -5,49 c -4,9 -5,21 -10,26 c -22,12 -22,1 -32,-10 c -10,-12 1,-31 6,-50 l 3,-24 c 0,0 2,-14 3,-22 c 0,-15 -1,-30 -3,-46 c -1,-14 -4,-28 -5,-42 c -1,-17 0,-34 2,-50 c 2,-8 5,-16 6,-25 c 0,-13 -4,-25 -6,-38 c -4,-25 -9,-49 -14,-74 c -3,-24 -9,-47 -10,-71 c 0,-20 1,-41 6,-60 c 4,-17 14,-33 21,-49 c 4,-8 9,-15 10,-23" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 488.5,4701 c 1,-26 -2.5,-254 -0.5,-377 c 1,-66 -31,-102 -39,-118" + style="fill:none;stroke:#7dc832;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.9412;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="M 367.4,4699 L 367,4370" + style="fill:none;stroke:#7dc832;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.9412;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 992.7,2245 l -0.3,-140" + style="display:inline;fill:none;stroke:#7dc832;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" + sodipodi:type="arc" + transform="matrix(0.721,0,0,0.721,950.4,2109)" /> + d="m 923.4,2245 l 69,0" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.6124;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.8372, 1.6124;stroke-dashoffset:0;stroke-opacity:1" /> + transform="translate(-529.5,684)"> + d="m 1711,2753 l 164,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1705,2714 l 176,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1711,2729 l 164,0" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 1727,2827 c -6,-24 -7,-39 -12,-60 c -3,-14 -2,-30 -7,-44 c -12,-25 -26,-61 -9,-86 c 9,-11 35,-10 55,-22 c 4,-2 6,-8 7,-13 c 0,-6 -1,-16 -1,-16 c 0,0 22,-8 34,-8 c 11,0 33,8 33,8 c 0,0 -2,11 -1,16 c 1,5 3,11 7,14 c 20,11 46,10 55,21 c 22,30 2,61 -9,87 c -5,13 -5,29 -8,43 c -4,21 -7,36 -12,59" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -9838,13 +9456,13 @@ sodipodi:role="line">Back + d="m 1432,4454 l 0,176" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> } - - - - - - - - - - Front - - - - - - - - 3 - - 1 - - 2 - - - 4 - + transform="translate(134.8,514.8)"> @@ -10128,11 +9545,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9" - d="m 641.9,4197.5 101.6,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 641.9,4198 l 101.6,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> Back @@ -10157,16 +9574,16 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7" - d="m 766.1,4041.5 -145.1,0" - style="fill:none;stroke:#000000;stroke-width:2.41860008;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="M 766.1,4042 L 621,4042" + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 754,4078 l -118.5,-1" + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 704.8,4077 c 0,6 -5.6,11 -11.3,11 c -6.4,0 -11.3,-5 -11.3,-11 c 0,-7 4.9,-12 11.3,-12 c 5.7,0 10.5,5 11.3,12" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 754.8,4107 l -123,-1" + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 704.8,4101 c 0,6 -5.6,11 -11.3,11 c -6.4,0 -11.3,-5 -11.3,-11 c 0,-6 4.9,-11 11.3,-11 c 5.7,0 10.5,5 11.3,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> 9 + d="m 572,2488 l 60,5" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.4008, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,2,-1608)"> @@ -10401,7 +9818,7 @@ inkscape:connector-curvature="0" id="path8471-6-6-72-2-3-9-50-1" d="m 1262,5069 c -12,4 14,-70 29,-64" - style="fill:none;stroke:#000000;stroke-width:2.13249993;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-width:2.1325;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,-43,-1621)"> + d="m 1923,5278 c 9,-21 73,-20 96,-53 c 11,-19 12,-47 12,-64 c -1,-10 -47,-35 -49,-104 c -1,-44 27,-93 91,-94 c 60,0 94,49 92,93 c -3,66 -46,97 -46,106 c 0,19 4,47 16,62 c 30,33 103,33 112,54" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,-35,-1635)"> @@ -10622,19 +10039,19 @@ inkscape:connector-curvature="0" id="path8471-6-6-72-2-3-9-50-18" d="m 623,5125 c 0,-12 -84,-20 -82,-6" - style="opacity:0.3;fill:none;stroke:#000000;stroke-width:2.13249993;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6.3974, 2.1325;stroke-dashoffset:0;stroke-opacity:1" /> + style="opacity:0.3;fill:none;stroke:#000000;stroke-width:2.1325;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6.3974, 2.1325;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 595,5069 c 12,16 18,15 29,19 c 5,5 13,14 16,16 c 8,5 19,10 27,6 c 3,-1 5,-10 5,-10 c -15,-11 -29,-23 -30,-36 c -2,-9 -2,-9 -4,-20 l -15,-24 c -4,-20 4,-43 9,-61 c -20,9 -40,7 -60,0 c -2,19 -4,34 -4,34 c -2,10 -2,20 -5,24 l -9,10 c -4,16 -7,34 -9,52 c -1,12 -2,24 -1,36 c 1,20 8,51 8,56 c 0,11 9,10 15,21 c 5,11 7,14 17,14 c 11,0 17,-3 22,-11 c 0,0 9,-31 12,-46 c 3,-20 4,-58 6,-60" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="opacity:0.3;fill:none;stroke:#000000;stroke-width:2.132;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6.396, 2.132;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="M 433.4,308.4 L 434.8,291 L 425,256.2 c -4,-20 4,-43 9,-61 c -20,9 -40,7 -60,0 c -2,19 -4,34 -4,34 c -2,10 -2,20 -5,24 l -9,10 c -4,16 -7,34 -9,52 c -1,12 -2,24 -1,36 c 1,20 8,51 8,56 c 0,11 9,10 15,21 c 5,11 7,14 17,14 c 11,0 17,-3 22,-11 c 0,0 9.8,-44.4 12.8,-59.4 c 3,-20 4,-58 6,-60" + style="fill:#ffffff;fill-opacity:0;stroke:#dba981;stroke-width:3.721;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,2,-1608)"> @@ -10804,7 +10221,7 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-5-2-4-8-7-6" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + transform="matrix(0.8062,0,0,0.8062,51,-1599)"> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 294,5024 c 12,16 18,15 29,19 c 5,5 13,14 16,16 c 8,5 19,10 27,6 c 3,-1 5,-10 5,-10 c -15,-11 -29,-23 -30,-36 c -2,-9 -2,-9 -4,-20 l -15,-24 c -4,-20 4,-43 9,-61 c -20,9 -40,7 -60,0 c -2,19 -4,34 -4,34 c -2,10 -2,20 -5,24 l -9,10 c -4,16 -7,34 -9,52 c -1,12 -2,24 -1,36 c 1,20 8,51 8,56 c 0,11 9,10 15,21 c 5,11 7,14 17,14 c 11,0 17,-3 22,-11 c 0,0 9,-31 12,-46 c 3,-20 4,-58 6,-60" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 244,5070 l 75,6" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.978, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -10920,19 +10337,19 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-72-2-3-9-5-6" - d="m 242.9,5071 -6.7,110" + d="m 242.9,5071 l -6.7,110" style="display:inline;fill:none;stroke:#dba981;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6, 3;stroke-dashoffset:0;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,51,-1599)"> @@ -10985,20 +10402,20 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3833-4-0-8-2-6-1-5-8" - d="m 2376,4933 -155,-1" + d="m 2376,4933 l -155,-1" style="fill:none;stroke:#dba981;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9, 3;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 2377,4933 l 0,223" + style="fill:none;stroke:#7dc832;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.9412;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 2344,5156 l 0,-32" + style="fill:none;stroke:#7dc832;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.9412;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> 5 + transform="matrix(0.8062,0,0,0.8062,51,-1599)"> @@ -11086,22 +10503,22 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3833-4-0-8-2-6-1-5" - d="m 1522,4933 139,1" + d="m 1522,4933 l 139,1" style="fill:none;stroke:#dba981;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9, 3;stroke-dashoffset:0;stroke-opacity:1" /> 3 @@ -11213,168 +10630,56 @@ inkscape:connector-curvature="0" id="path3833-4-0-8-2-6-5-3-6-3-4" d="m 1634,5190 c 39,-2 63,-27 87,-33" - style="display:inline;fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> DHand - - - - - - - - Front - - - - - - - 6 - - + transform="matrix(0.8062,0,0,0.8062,-478.3,2669)"> @@ -11403,23 +10708,23 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-1-8-9-2" - d="m 931.8,1967 0,-45" + d="m 931.8,1967 l 0,-45" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="matrix(0.8062,0,0,0.8062,-443.9,2631)"> @@ -11531,23 +10836,23 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-1-8-9-2-1" - d="m 1174,1849 0,-45" + d="m 1174,1849 l 0,-45" style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 1170,1950 c 5,-2 10,-3 16,-10 c 3,3 5,7 12,9" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + transform="matrix(0.8062,0,0,0.8062,-646.7,2632)"> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -11650,8 +10955,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-7-8-46-2-8-0-1-88-2-7-10-5-6" - d="m 1869,1825 107,0" - style="fill:none;stroke:#aaaaaa;stroke-width:3.00049996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6.001, 3.0005, 1.5002, 3.0005;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1869,1825 l 107,0" + style="fill:none;stroke:#aaaaaa;stroke-width:3.0005;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:6.001, 3.0005, 1.5002, 3.0005;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#000000;stroke-width:0.8943px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + d="m 1976,1824 l 0,31" + style="fill:none;stroke:#000000;stroke-width:2.6824;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + style="fill:none;stroke:#000000;stroke-width:2.6829;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1756,1956 l 220,1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1762,1975 l 206,-1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> angle @@ -11843,7 +11148,7 @@ id="text6934-3-2" y="1775.4612" x="1838.6133" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.69000053px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.69px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" xml:space="preserve"> + transform="matrix(0.8062,0,0,0.8062,114.7,2309)"> @@ -11864,16 +11169,16 @@ inkscape:connector-curvature="0" id="path8584-0-8-6-3-4-9-7-3" d="m 1396,2358 c -18,-31 -10,-56 0,-100" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -11888,14 +11193,14 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-5-3-4-0-4-2-0-9-5-0-1" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + style="fill:none;stroke:#000000;stroke-width:0.8943px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)" /> + style="fill:none;stroke:#000000;stroke-width:2.6829;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1176,2357 l 220,1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1182,2376 l 206,-1" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -11960,7 +11265,7 @@ id="text6934-3-2-9" y="2176.5613" x="1258.5133" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.69000053px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.69px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" xml:space="preserve"> + transform="matrix(0.8062,0,0,0.8062,36.37,2236)"> @@ -12037,23 +11342,23 @@ sodipodi:nodetypes="csc" inkscape:connector-curvature="0" id="path2993-6-7-5" - d="m 658.5,1911 c 2.2,4 -6.8,51 -15.9,75 -4.5,13 -6.8,35 -5.6,48" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 658.5,1911 c 2.2,4 -6.8,51 -15.9,75 c -4.5,13 -6.8,35 -5.6,48" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 675.5,1819 c -17,4 -21.6,10 -27.2,20 c -10.2,18 -20.4,45 -7.9,62 c 6.7,9 27.1,15 33.9,6" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 548.6,1780 c 0,0 12.4,6 19.2,6 c 37.4,2 46.5,-10 46.5,-10" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> @@ -12061,16 +11366,16 @@ sodipodi:nodetypes="cccscccccccacacccc" inkscape:connector-curvature="0" id="path15557" - d="m 512.3,2032 c 2.3,-15 -1.1,-33 -2.2,-48 0,-7 2.2,-12 0,-22 -10.2,-9 -19.3,-30 -19.3,-45 0,-13 9.1,-22 12.5,-37 2.2,-7 -6.8,-17 -9.1,-29 -3.4,-11 0,-24 5.7,-26 11.3,-2 29.4,-10 39.6,-18 9.1,-9 7.9,-27 7.9,-27 0,0 1.2,-6 19.3,-8 17,-1 48.7,4 48.7,4 0,0 -1.1,12 2.3,17 12.5,15 43,18 54.4,23 17,7 15.8,14 18.1,23 4.5,24 -9.1,51 -17,70 -6.8,15 -6.8,33 -11.3,49 -3.4,10 -6.8,19 -10.2,29 -2.3,9 -5.7,32 -4.6,42" - style="fill:none;stroke:#dba981;stroke-width:3.72099996;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 512.3,2032 c 2.3,-15 -1.1,-33 -2.2,-48 c 0,-7 2.2,-12 0,-22 c -10.2,-9 -19.3,-30 -19.3,-45 c 0,-13 9.1,-22 12.5,-37 c 2.2,-7 -6.8,-17 -9.1,-29 c -3.4,-11 0,-24 5.7,-26 c 11.3,-2 29.4,-10 39.6,-18 c 9.1,-9 7.9,-27 7.9,-27 c 0,0 1.2,-6 19.3,-8 c 17,-1 48.7,4 48.7,4 c 0,0 -1.1,12 2.3,17 c 12.5,15 43,18 54.4,23 c 17,7 15.8,14 18.1,23 c 4.5,24 -9.1,51 -17,70 c -6.8,15 -6.8,33 -11.3,49 c -3.4,10 -6.8,19 -10.2,29 c -2.3,9 -5.7,32 -4.6,42" + style="fill:none;stroke:#dba981;stroke-width:3.721;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 513.5,1991 l 6.8,-1 c 26,-4 50.9,-1 78.1,1 l 40.8,4" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 579.2,1856 c 0,9 -8,16 -15.9,16 c -9.1,0 -15.9,-7 -15.9,-16 c 0,-9 6.8,-16 15.9,-16 c 7.9,0 14.7,7 15.9,16" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.5776;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + transform="matrix(0.8062,0,0,0.8062,-6.285,2225)"> @@ -12109,47 +11414,47 @@ sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path3874-7-8-0-3-9" - d="m 285.9,1948 6.8,-1 29.4,-1 48.8,2 52.1,6" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 285.9,1948 l 6.8,-1 l 29.4,-1 l 48.8,2 l 52.1,6" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 271.2,1883 c 0,0 10.2,-7 15.8,-10 c 6.8,-2 14.8,-3 21.5,-3 c 22.7,-1 45.4,-2 66.9,3 c 20.4,5 45.3,25 58.9,26" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 267.8,1904 c 0,0 17,-2 24.9,-3 c 23.8,-2 46.4,-3 70.2,0 c 23.8,2 51,9 69.1,13" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -12157,17 +11462,17 @@ sodipodi:nodetypes="cac" inkscape:connector-curvature="0" id="path3992-4-9-6-1-0-0-1-02" - d="m 382.2,1767 c 3.4,11 1.1,10 4.5,14 11.4,13 35.1,19 49.9,22" - style="fill:none;stroke:#dba981;stroke-width:1.48899996;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 382.2,1767 c 3.4,11 1.1,10 4.5,14 c 11.4,13 35.1,19 49.9,22" + style="fill:none;stroke:#dba981;stroke-width:1.489;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.467, 1.489;stroke-dashoffset:0;stroke-opacity:1" /> @@ -12175,17 +11480,17 @@ sodipodi:nodetypes="ccc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7-3-2-4-0-9-7-9-10-7" - d="m 326.7,2022 c -4.6,-44 -15.9,-104 -15.9,-119 -2.3,-18 21.5,-58 35.1,-100" - style="fill:none;stroke:#000000;stroke-width:3.39899993;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 326.7,2022 c -4.6,-44 -15.9,-104 -15.9,-119 c -2.3,-18 21.5,-58 35.1,-100" + style="fill:none;stroke:#000000;stroke-width:3.399;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="translate(107.3,702.3)"> + d="m 681.3,3089 l 14.7,14" + style="fill:none;stroke:#dba981;stroke-width:0.8275;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 696,3089 l -14.7,14" + style="fill:none;stroke:#dba981;stroke-width:0.8275;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 595.1,3140 l 114.6,0" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -12228,40 +11533,40 @@ inkscape:connector-curvature="0" id="path8584-1-4-6-3-4-4-4-4-7-8" d="m 723.4,3083 c -4.8,-2 -29,6 -3.2,-65" - style="fill:none;stroke:#dba981;stroke-width:2.9999001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 582.4,3086 c 15.3,0 16.7,-21 70.7,-21 c 54.6,0 50.2,22 69.5,22" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 588.6,3097 l 130,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 601.5,3175 l 101.8,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -12269,14 +11574,14 @@ inkscape:connector-curvature="0" id="path4864-7" d="m 678.9,3003 c 7.5,57 12.3,115 16.3,173" - style="fill:none;stroke:#000000;stroke-width:2.41860008;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" sodipodi:nodetypes="cc" /> 6 + transform="translate(-83.55,267)"> @@ -12410,17 +11715,17 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3992-4-77-9-5-7-1-2-9-8-5-4-1-4-8-7-8-4" - d="m 988.7,3578 114.3,0" - style="display:inline;fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 988.7,3578 l 114.3,0" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 995.7,3611 l 102.3,1" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -12431,8 +11736,8 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7-3-2-4-0-9-7-9-3-2" - d="m 1449,3176 6,-35" - style="display:inline;fill:none;stroke:#000000;stroke-width:2.41860008;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 1449,3176 l 6,-35" + style="display:inline;fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 978.7,3524 c 15,0 15,-23 69.3,-23 c 54,0 50,22 69,22" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 982.7,3533 l 130.3,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> 9 11 + transform="translate(-224.3,702.6)"> @@ -12676,40 +11981,40 @@ inkscape:connector-curvature="0" id="path8584-1-4-6-3-4-4-4-4-7-8-0" d="m 1477,3083 c -4,-2 -29,5 -3,-65" - style="fill:none;stroke:#dba981;stroke-width:2.9999001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:2.9999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1338,3087 c 15,0 15,-20 69,-22 c 57,-1 49,21 69,21" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1343,3097 l 129,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1355,3175 l 103,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -12718,7 +12023,7 @@ id="text6934-2-9-4-0-5-3-2" y="2971.208" x="1387.5156" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.51119995px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.5112px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" xml:space="preserve"> + d="m 1380,3003 l 0,94" + style="fill:none;stroke:#000000;stroke-width:2.4188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> 16 13 @@ -12835,7 +12140,7 @@ transform="matrix(0.8062,0,0,0.8062,1105,790.3)" /> + d="m 1349,3139 l 115,0" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + transform="translate(619.1,702.7)"> @@ -12888,35 +12193,35 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-3-9-1-3-3-4-6-5" - d="m 775.9,3117 128.2,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 775.9,3117 l 128.2,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 769.5,3085 l 142.7,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -12924,11 +12229,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1-2-5-4-2-0" - d="m 788.8,3175 104.8,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 788.8,3175 l 104.8,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> Back @@ -12947,34 +12252,34 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7-3-2-4-0-9-7" - d="M 882.3,3174 868.6,3003" - style="fill:none;stroke:#000000;stroke-width:2.41860008;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="M 882.3,3174 L 868.6,3003" + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 797.7,3139 c 0,7 -5.7,11 -11.3,11 c -6.5,0 -11.3,-4 -11.3,-11 c 0,-6 4.8,-11 11.3,-11 c 5.6,0 10.5,5 11.3,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 824.3,3139 c 0,7 -5.7,11 -11.3,11 c -6.5,0 -11.3,-4 -11.3,-11 c 0,-6 4.8,-11 11.3,-11 c 5.6,0 10.5,5 11.3,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 852.5,3139 c 0,7 -5.6,11 -11.3,11 c -6.4,0 -11.3,-4 -11.3,-11 c 0,-6 4.9,-11 11.3,-11 c 5.7,0 10.5,5 11.3,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + transform="translate(440.3,267.1)"> @@ -13051,35 +12356,35 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-3-9-1-3-3-4-6-5-0-7" - d="m 1166,3553 133,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1166,3553 l 133,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1162,3522 l 142,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -13087,11 +12392,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1-2-5-4-2-0-8-1" - d="m 1181,3612 105,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1181,3612 l 105,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> Back @@ -13110,31 +12415,31 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7-3-2-4-0-9-7-9-3" - d="m 1265,3613 0,-60" - style="fill:none;stroke:#000000;stroke-width:2.41860008;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 1265,3613 l 0,-60" + style="fill:none;stroke:#000000;stroke-width:2.4186;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + d="m 1252,3504 c 0,7 -5,12 -11,12 c -6,0 -11,-5 -11,-12 c 0,-6 5,-11 11,-11 c 6,0 11,5 11,11" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 1224,3612 l 0,-90" + style="display:inline;fill:none;stroke:#7dc832;stroke-width:3.2248;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> @@ -13170,7 +12475,7 @@ id="text8512-9-6-3-7-2-5-4-8-3-9" y="3571.2363" x="1233.0699" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.51159954px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.5116px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none" xml:space="preserve"> + transform="translate(304.6,701.7)"> @@ -13268,11 +12573,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-3-9-1-0-2-9-3-0-4" - d="m 1516,3086 143,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1516,3086 l 143,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -13280,29 +12585,29 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-3-9-1-3-3-4-6-5-0" - d="m 1522,3118 129,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1522,3118 l 129,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -13310,11 +12615,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1-2-5-4-2-0-8" - d="m 1535,3177 105,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1535,3177 l 105,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> Back + d="m 1644,3048 c 0,6 -5,11 -11,11 c -6,0 -11,-5 -11,-11 c 0,-7 5,-12 11,-12 c 6,0 11,5 11,12" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:1.1226;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" /> + d="m 1618,3085 l 0,-80" + style="fill:none;stroke:#000000;stroke-width:2.4188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> @@ -13372,7 +12677,7 @@ transform="matrix(0.8062,0,0,0.8062,1290,788.1)" /> 28 @@ -13405,21 +12710,21 @@ id="text8512-9-6-3-7-2-5-4-8-9-7" y="3074.1987" x="1551.6572" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.51159954px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.5116px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" xml:space="preserve">27 @@ -13428,7 +12733,7 @@ inkscape:connector-curvature="0" id="path7494-1-6-3-5-81-64-9-2-0-5-7-3-2-4-0-9-7-74-7-7-3" d="m 1527,3085 c 0,-26 4,-42 -12,-66" - style="fill:none;stroke:#000000;stroke-width:2.41880012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + style="fill:none;stroke:#000000;stroke-width:2.4188;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker7359);marker-end:url(#marker7359)" /> + transform="translate(103.9,368.2)"> @@ -13473,35 +12778,35 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-3-9-1-3-3-4-6-5-0-7-9" - d="m 1320,3820 133,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1320,3820 l 133,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1316,3789 l 142,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -13509,11 +12814,11 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path8471-6-6-6-8-7-8-3-3-9-1-2-5-4-2-0-8-1-2" - d="m 1335,3879 105,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + d="m 1335,3879 l 105,0" + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> Back @@ -13558,7 +12863,7 @@ id="text8512-9-6-3-7-2-5-4-7-0-8-4" y="3806.7283" x="1381.1267" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.51159954px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.5116px;line-height:125%;font-family:'Standard Symbols L';-inkscape-font-specification:'Standard Symbols L';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" xml:space="preserve"> + d="m 1325,3756 l 123,0" + style="display:inline;fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + transform="translate(16.54,613.4)"> + d="m 1671,5834 l 103,0" + style="fill:none;stroke:#dba981;stroke-width:1.6124;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.8372, 1.6124;stroke-dashoffset:0;stroke-opacity:1" /> @@ -13626,22 +12931,22 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path10369" - d="m 1823,5961 0,-128" - style="fill:none;stroke:#7dc832;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.94120029" /> + d="m 1823,5961 l 0,-128" + style="fill:none;stroke:#7dc832;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.9412" /> + transform="translate(79.05,495.9)"> @@ -13689,10 +12994,10 @@ inkscape:connector-curvature="0" id="path5925-1-0-54-7-6-9" d="m 1845,5415 c -5,4 -19,2 -19,0" - style="fill:none;stroke:#dba981;stroke-width:1.20039999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> + style="fill:none;stroke:#dba981;stroke-width:1.2004;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3.6013, 1.2004;stroke-dashoffset:0;stroke-opacity:1" /> @@ -13707,11 +13012,11 @@ sodipodi:cy="50.32" sodipodi:cx="57.75" id="path4050-8-0-9-9-5-9-1-2-36-3-2-3-3" - style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.94120029;marker:none;enable-background:accumulate" + style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;stroke:#00000f;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.9412;marker:none;enable-background:accumulate" sodipodi:type="arc" /> + transform="translate(-1538,-464.2)"> @@ -13766,8 +13071,8 @@ sodipodi:nodetypes="cacccccccsscccscccccscccc" inkscape:connector-curvature="0" id="path2997-1-2-9-0-8-5-3" - d="m 2066,1193 c -2,13 -9,25 -14,37 -9,27 -30,52 -29,81 0,21 24,62 24,62 0,0 -3,64 -4,97 -1,20 -1,41 -3,61 -1,6 -2,10 -2,14 -5,18 -14,35 -15,54 -3,42 15,84 16,126 1,8 -1,16 -1,24 0,7 -3,15 1,19 3,5 9,6 14,8 5,2 10,2 16,4 11,3 22,10 35,11 17,3 46,0 52,-4 5,-3 0,-9 -2,-12 -4,-5 -13,-7 -17,-9 -12,-6 -24,-15 -35,-21 -8,-5 -16,-7 -21,-14 0,-4 -1,-14 1,-25 3,-25 5,-46 7,-86 1,-20 1,-40 6,-59 1,-9 6,-18 9,-26 7,-17 14,-34 18,-52 12,-38 28,-89 26,-129" - style="fill:none;stroke:#dba981;stroke-width:4.09130001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 2066,1193 c -2,13 -9,25 -14,37 c -9,27 -30,52 -29,81 c 0,21 24,62 24,62 c 0,0 -3,64 -4,97 c -1,20 -1,41 -3,61 c -1,6 -2,10 -2,14 c -5,18 -14,35 -15,54 c -3,42 15,84 16,126 c 1,8 -1,16 -1,24 c 0,7 -3,15 1,19 c 3,5 9,6 14,8 c 5,2 10,2 16,4 c 11,3 22,10 35,11 c 17,3 46,0 52,-4 c 5,-3 0,-9 -2,-12 c -4,-5 -13,-7 -17,-9 c -12,-6 -24,-15 -35,-21 c -8,-5 -16,-7 -21,-14 c 0,-4 -1,-14 1,-25 c 3,-25 5,-46 7,-86 c 1,-20 1,-40 6,-59 c 1,-9 6,-18 9,-26 c 7,-17 14,-34 18,-52 c 12,-38 28,-89 26,-129" + style="fill:none;stroke:#dba981;stroke-width:4.0913;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> A01 - Height: Total (height)A02 - Height: Neck Back (height_neck_back)A03 - Height: Scapula (height_scapula)A04 - Height: Armpit (height_armpit)A05 - Height: Waist Side (height_waist_side)A06 - Height: Hip (height_hip)A07 - Height: Gluteal Fold (height_gluteal_fold)A08 - Height: Knee (height_knee)A09 - Height: Calf (height_calf)A10 - Height: Ankle High (height_ankle_high)A11 - Height: Ankle (height_ankle)A12 - Height: Highhip (height_highhip)A13 - Height: Waist Front (height_waist_front)A14 - Height: Bustpoint (height_bustpoint)A15 - Height: Shoulder Tip (height_shoulder_tip)A16 - Height: Neck Front (height_neck_front)A17 - Height: Neck Side (height_neck_side)A18 - Height: Neck Back to Knee (height_neck_back_to_knee)A19 - Height: Waist Side to Knee (height_waist_side_to_knee)A20 - Height: Waist Side to Hip (height_waist_side_to_hip)A21 - Height: Knee to Ankle (height_knee_to_ankle)A22 - Height: Neck Back to Waist Side (height_neck_back_to_waist_side)A23 - Height: Waist Back (height_waist_back)B01 - Width: Shoulder (width_shoulder)B02 - Width: Bust (width_bust)B03 - Width: Waist (width_waist)B04 - Width: Hip (width_hip)B05 - Width: Abdomen to Hip (width_abdomen_to_hip)C01 - Indent: Neck Back (indent_neck_back)C02 - Indent: Waist Back (indent_waist_back)C03 - Indent: Ankle High (indent_ankle_high) head_chin_to_neck_back) hip_circ_with_abdomen) H05 - Neck Side to Waist level front (neck_side_to_waist_f)H42 - Across Back to Waist back (across_back_to_waist_b) + id="tspan6269">across_back_to_waist_b) arm_neck_side_to_outer_elbow) M01 - Leg: Crotch to floor (leg_crotch_to_floor)M02 - Leg: Waist Side to floor (leg_waist_side_to_floor)M03 - Leg: Thigh Upper circumference (leg_thigh_upper_circ)M04 - Leg: Thigh Middle circumference (leg_thigh_mid_circ)M05 - Leg: Knee circumference (leg_knee_circ)M06 - Leg: Knee Small circumference (leg_knee_small_circ)M07 - Leg: Calf circumference (leg_calf_circ)M08 - Leg: Ankle High circumference (leg_ankle_high_circ)M09 - Leg: Ankle circumference (leg_ankle_circ)M10 - Leg: Knee circumference bent (leg_knee_circ_bent)M11 - Leg: Ankle diagonal circumference (leg_ankle_diag_circ)M12 - Leg: Crotch to Ankle (leg_crotch_to_ankle)M13 - Leg: Waist Side to Ankle (leg_waist_side_to_ankle)M14 - Leg: Waist Side to Knee (leg_waist_side_to_knee)N01 - Crotch length (crotch_length)N02 - Crotch length back (crotch_length_b)N03 - Crotch length front (crotch_length_f)N04 - Rise length side sitting (rise_length_side_sitting)N05 - Rise length diagonal (rise_length_diag)N06 - Rise length back (rise_length_b)N07 - Rise length front (rise_length_f)N08 - Rise length side (rise_length_side) O01 - Neck Back to Waist Front (neck_back_to_waist_front)O02 - Waist to Waist Halter around Neck Back (waist_to_waist_halter)O03 - Natural Waist circumference (waist_natural_circ)O04 - Natural Waist arc front (waist_natural_arc_f)O05 - Natural Waist arc back (waist_natural_arc_b)O06 - Waist Front to Natural Waist Front (waist_to_natural_waist_f)O07 - Waist Back to Natural Waist Back (waist_to_natural_waist_b)O08 - Arm: Neck Back to Elbow high bend (arm_neck_back_to_elbow_bent)O09 - Arm: Neck Back to Wrist high bend (arm_neck_back_to_wrist_bent)O10 - Arm: Neck Side to Elbow high bend (arm_neck_side_to_elbow_bent)O11 - Arm: Neck Side to Wrist high bend (arm_neck_side_to_wrist_bent)O12 - Arm: Across Back Center to Elbow high bend (arm_across_back_center_to_elbow_bent)O13 - Arm: Across Back Center to Wrist high bend (arm_across_back_center_to_wrist_bent)O14 - Arm: Armscye Back Center to Wrist high bend (arm_armscye_back_center_to_wrist_bent) I01 - Shoulder length (shoulder_length)I02 - Shoulder Tip to Shoulder Tip front (shoulder_tip_to_shoulder_tip_f)I03 - Across Chest (across_chest_f)I04 - Armfold to Armfold front (armfold_to_armfold_f)I05 - Shoulder Tip to Shoulder Tip front half (shoulder_tip_to_shoulder_tip_half_f)I06 - Across Chest half (across_chest_half_f)I07 - Shoulder Tip to Shoulder Tip back (shoulder_tip_to_shoulder_tip_b)I08 - Across Back (across_back_b)I09 - Armfold to Armfold back (armfold_to_armfold_b)I10 - Shoulder Tip to Shoulder Tip back half (shoulder_tip_to_shoulder_tip_half_b)I11 - Across Back half (across_back_half_b)I12 - Neck Front to Shoulder Tip (neck_front_to_shoulder_tip_f)I13 - Neck Back to Shoulder Tip (neck_back_to_shoulder_tip_b)I14 - Neck Width (neck_width) J01 - Bustpoint to Bustpoint (bustpoint_to_bustpoint)J02 - Bustpoint to Neck Side (bustpoint_to_neck_side)J03 - Bustpoint to Lowbust (bustpoint_to_lowbust)J04 - Bustpoint to Waist level (bustpoint_to_waist)J05 - Bustpoint to Bustpoint half (bustpoint_to_bustpoint_half)J06 - Bustpoint Neck Side to Waist level (bustpoint_neck_side_to_waist)J07 - Bustpoint to Shoulder Tip (bustpoint_to_shoulder_tip)J08 - Bustpoint to Waist Front (bustpoint_to_waist_front)J09 - Bustpoint to Bustpoint Halter (bustpoint_to_bustpoint_halter) + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:169%;font-family:Sans;-inkscape-font-specification:'Sans Italic'" + id="tspan6362">bustpoint_to_bustpoint_halter)J10 - Bustpoint to Shoulder center (bustpoint_to_shoulder_center) K01 - Shoulder Tip to Waist Front (shoulder_tip_to_waist_front) K02 - Neck Front to Waist Side (neck_front_to_waist_side) K03 - Neck Side to Waist Side front (neck_side_to_waist_side_f) K04 - Shoulder Tip to Waist Back (shoulder_tip_to_waist_back) K05 - Shoulder Tip to Waist Back with 1in (2.54cm) offset (shoulder_tip_to_waist_b_1in_offset)K06 - Neck Back to Waist Side (neck_back_to_waist_side)K07 - Neck Side to Waist Side back (neck_side_to_waist_side_b)K08 - Neck Side to Armfold Front (neck_side_to_armfold_f)K09 - Neck Side to Highbust Side front (neck_side_to_armpit_f)K10 - Neck Side to Bust Side front (neck_side_to_bust_side_f)K11 - Neck Side to Armfold Back (neck_side_to_armfold_b)K12 - Neck Side to Highbust Side back (neck_side_to_armpit_b)K13 - Neck Side to Bust Side back (neck_side_to_bust_side_b) P01 - Neck Back to Bust Front (neck_back_to_bust_front)P02 - Neck Back to Armfold Front (neck_back_to_armfold_front)P03 - Neck Back over Shoulder to Waist Side (neck_back_to_armfold_front_to_waist_side)P04 - Highbust Back over Shoulder to Armfold Front (highbust_back_over_shoulder_to_armfold_front)P05 - Highbust Back over Shoulder to Waist Front (highbust_back_over_shoulder_to_waist_front) P06 - Neck Back to Armfold Front to Neck Back (neck_back_to_armfold_front_to_neck_back)P07 - Across Back Center circled around Shoulder (across_back_center_to_armfold_front_to_across_back_center)P08 - Neck Back to Armfold Front to Highbust Back (neck_back_to_armfold_front_to_highbust_back)P09 - Armfold to Armfold front curved through Bust Front (armfold_to_armfold_bust)P10 - Armfold to Bust Front (armfold_to_bust_front)P11 - Highbust Back over Shoulder to Highbust level (highbust_b_over_shoulder_to_highbust_f)P12 - Armscye: Arc (armscye_arc) Q03 - Dart Width: Waist (dart_width_waist) + + + + 23 + + + + + + + + Front + + + + + + + + + + + + + 9 + + + + + Front + + + + + + + + + + + 7 + + + 8 + + + + + + + + + + Front + + + + + + + 5 + + + + + + + + + + + Front + + + + + + + + 3 + + 1 + + 2 + + + 4 + + + + + + + + + Front + + + + + + + 6 + + + + + + + + + + + + Front + + + 10 + + + + diff --git a/share/measurement-body-points.svg b/share/measurement-body-points.svg new file mode 100644 index 000000000..0e5037f50 --- /dev/null +++ b/share/measurement-body-points.svg @@ -0,0 +1,1508 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + Valentina Body Points + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Back + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Front + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Side + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From f56f2a0209bb0439f403a07121784487875b1425 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 9 Jul 2016 13:57:37 +0300 Subject: [PATCH 14/69] Fixed issue #526. Dialog Detail is not on top after selection second object on Mac. (grafted from acde5cf1164d8227d71e7ff41ce03b45cbe7c9dd) --HG-- branch : develop --- ChangeLog.txt | 1 + src/app/valentina/mainwindow.cpp | 2 ++ src/libs/vtools/dialogs/tools/dialogdetail.cpp | 2 ++ 3 files changed, 5 insertions(+) diff --git a/ChangeLog.txt b/ChangeLog.txt index 81933da38..780fa2465 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -49,6 +49,7 @@ - [#516] Valentina crashes when use "Point intersect line and axis" instrument. - [#483] File lost. - Fixed Bisector tool bug. The tool created internal variable for wrong segment. +- [#526] Dialog Detail is not on top after selection second object on Mac. # Version 0.4.4 April 12, 2016 - Updated measurement templates with all measurements. Added new template Aldrich/Women measurements. diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index b6d8f9069..015887aff 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -3099,6 +3099,8 @@ void MainWindow::ActionHistory(bool checked) dialogHistory->setWindowFlags(Qt::Window); connect(this, &MainWindow::RefreshHistory, dialogHistory.data(), &DialogHistory::UpdateHistory); connect(dialogHistory.data(), &DialogHistory::DialogClosed, this, &MainWindow::ClosedActionHistory); + // Fix issue #526. Dialog Detail is not on top after selection second object on Mac. + dialogHistory->setWindowFlags(dialogHistory->windowFlags() | Qt::WindowStaysOnTopHint); dialogHistory->show(); } else diff --git a/src/libs/vtools/dialogs/tools/dialogdetail.cpp b/src/libs/vtools/dialogs/tools/dialogdetail.cpp index 44d2e2939..e79102c4e 100644 --- a/src/libs/vtools/dialogs/tools/dialogdetail.cpp +++ b/src/libs/vtools/dialogs/tools/dialogdetail.cpp @@ -130,6 +130,8 @@ void DialogDetail::ChosenObject(quint32 id, const SceneObject &type) } ValidObjects(DetailIsValid()); + // Fix issue #526. Dialog Detail is not on top after selection second object on Mac. + setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); this->show(); } } From 3f342a880d4717025cc60cb9a62762ceb8bc5fb8 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 10 Jul 2016 15:54:01 +0300 Subject: [PATCH 15/69] Slackware build script for valentina. --HG-- branch : develop --- dist/SlackBuild/valentina/README | 5 + dist/SlackBuild/valentina/doinst.sh | 13 ++ dist/SlackBuild/valentina/slack-desc | 21 ++++ .../SlackBuild/valentina/valentina.SlackBuild | 117 ++++++++++++++++++ dist/SlackBuild/valentina/valentina.info | 10 ++ 5 files changed, 166 insertions(+) create mode 100644 dist/SlackBuild/valentina/README create mode 100644 dist/SlackBuild/valentina/doinst.sh create mode 100644 dist/SlackBuild/valentina/slack-desc create mode 100644 dist/SlackBuild/valentina/valentina.SlackBuild create mode 100644 dist/SlackBuild/valentina/valentina.info diff --git a/dist/SlackBuild/valentina/README b/dist/SlackBuild/valentina/README new file mode 100644 index 000000000..74f633b6d --- /dev/null +++ b/dist/SlackBuild/valentina/README @@ -0,0 +1,5 @@ +Valentina is a cross-platform patternmaking program which allows designers +to create and model patterns of clothing. This software allows pattern +creation, using either standard sizing tables or an individual’s set of +measurements. It blends new technologies with traditional methods to create +a unique pattern making tool. diff --git a/dist/SlackBuild/valentina/doinst.sh b/dist/SlackBuild/valentina/doinst.sh new file mode 100644 index 000000000..9424ce43f --- /dev/null +++ b/dist/SlackBuild/valentina/doinst.sh @@ -0,0 +1,13 @@ +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi + +if [ -x /usr/bin/update-mime-database ]; then + /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1 +fi + +if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then + if [ -x /usr/bin/gtk-update-icon-cache ]; then + /usr/bin/gtk-update-icon-cache usr/share/icons/hicolor >/dev/null 2>&1 + fi +fi diff --git a/dist/SlackBuild/valentina/slack-desc b/dist/SlackBuild/valentina/slack-desc new file mode 100644 index 000000000..4f31ec368 --- /dev/null +++ b/dist/SlackBuild/valentina/slack-desc @@ -0,0 +1,21 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +valentina: valentina (Cross-Platform patternmaking program) +valentina: +valentina: Valentina is a cross-platform patternmaking program which allows +valentina: designers to create and model patterns of clothing. This software +valentina: allows pattern creation, using either standard sizing tables or an +valentina: individual’s set of measurements. It blends new technologies with +valentina: traditional methods to create a unique pattern making tool. +valentina: +valentina: Homepage: http://www.valentina-project.org/ +valentina: +valentina: +valentina: +valentina: diff --git a/dist/SlackBuild/valentina/valentina.SlackBuild b/dist/SlackBuild/valentina/valentina.SlackBuild new file mode 100644 index 000000000..103e770ae --- /dev/null +++ b/dist/SlackBuild/valentina/valentina.SlackBuild @@ -0,0 +1,117 @@ +#!/bin/sh + +# Slackware build script for valentina + +# Copyright 2016 Roman Telezhynskyi +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=valentina +VERSION=${VERSION:-0.4.4} +BUILD=${BUILD:-1} +TAG=${TAG:-dismine} +COMMIT=610ac13345d7 + +# Use parallel building if possible +if [ -z "$NUMJOBS" ]; then + NUMJOBS=$(nproc) +fi + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i486 ;; + arm*) ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e # Exit on most errors + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf dismine-$PRGNAM-$COMMIT +tar xvf $CWD/dismine-$PRGNAM-$COMMIT.tar.gz +cd dismine-$PRGNAM-$COMMIT +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +qmake-qt5 Valentina.pro \ + QMAKE_CXXFLAGS="$SLKCFLAGS" \ + PREFIX=/usr \ + PREFIX_LIB=${LIBDIRSUFFIX} \ + "CONFIG += noTests noRunPath no_ccache noDebugSymbols" + +make -j${NUMJOBS} +make install INSTALL_ROOT=$PKG + +# Strip binaries +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +# Install all the needed stuff to the package dir +mkdir -p $PKG/usr/man/man1 +install -m 644 dist/debian/valentina.1 $PKG/usr/man/man1/ +install -m 644 dist/debian/tape.1 $PKG/usr/man/man1/ + +# Compress man pages +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +# Copy icon, desktop file and mime info +mkdir -p $PKG/usr/share/mime/packages +cat dist/debian/valentina.sharedmimeinfo > $PKG/usr/share/mime/packages/$PRGNAM.xml + +# Copy program documentation into the package +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a LICENSE_GPL.txt README.txt ChangeLog.txt $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +# Make the package +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/dist/SlackBuild/valentina/valentina.info b/dist/SlackBuild/valentina/valentina.info new file mode 100644 index 000000000..90e79da88 --- /dev/null +++ b/dist/SlackBuild/valentina/valentina.info @@ -0,0 +1,10 @@ +PRGNAM="valentina" +VERSION="0.4.4" +HOMEPAGE="http://www.valentina-project.org/" +DOWNLOAD="https://bitbucket.org/dismine/valentina/get/v0.4.4.tar.gz" +MD5SUM="4d2d030e7251bd5b2ca34d3e629831e3" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="qt5" +MAINTAINER="Roman Telezhynskyi" +EMAIL="dismine@gmail.com" From 14d4f14adb3d5239c78834921f54b10d99f330d2 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 10 Jul 2016 16:27:32 +0300 Subject: [PATCH 16/69] When download an archive with source code from bitbucket by browser you will get different than in a link. But when use wget downloads an archive it gets correct name. --HG-- branch : develop --- dist/SlackBuild/valentina/valentina.SlackBuild | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/SlackBuild/valentina/valentina.SlackBuild b/dist/SlackBuild/valentina/valentina.SlackBuild index 103e770ae..f15962a2b 100644 --- a/dist/SlackBuild/valentina/valentina.SlackBuild +++ b/dist/SlackBuild/valentina/valentina.SlackBuild @@ -68,7 +68,7 @@ rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf dismine-$PRGNAM-$COMMIT -tar xvf $CWD/dismine-$PRGNAM-$COMMIT.tar.gz +tar xvf $CWD/v$VERSION.tar.gz cd dismine-$PRGNAM-$COMMIT chown -R root:root . find -L . \ From e4d6df06b7e968a3c49d803914ef374e61b93d6b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 13 Jul 2016 14:41:44 +0300 Subject: [PATCH 17/69] Refactoring. Instead of using proxy slots emit signals directly from lambda expressions. --HG-- branch : develop --- src/app/valentina/dialogs/dialoghistory.cpp | 2 +- .../dialogs/dialoglayoutprogress.cpp | 8 +------ .../valentina/dialogs/dialoglayoutprogress.h | 1 - src/libs/ifc/xml/vabstractpattern.cpp | 23 ------------------- src/libs/ifc/xml/vabstractpattern.h | 3 --- .../dialogs/tools/dialogcubicbezierpath.cpp | 2 +- .../tools/dialogcurveintersectaxis.cpp | 3 ++- .../vtools/dialogs/tools/dialogendline.cpp | 2 +- .../dialogs/tools/dialoglineintersectaxis.cpp | 3 ++- .../vtools/dialogs/tools/dialogrotation.cpp | 2 +- .../vtools/dialogs/tools/dialogsplinepath.cpp | 2 +- src/libs/vtools/dialogs/tools/dialogtool.cpp | 6 ----- src/libs/vtools/dialogs/tools/dialogtool.h | 1 - .../toolsinglepoint/vtoolbasepoint.cpp | 6 ++--- src/libs/vtools/tools/drawTools/vdrawtool.cpp | 2 +- src/libs/vtools/tools/vabstracttool.cpp | 2 +- src/libs/vtools/tools/vtooldetail.cpp | 4 ++-- 17 files changed, 17 insertions(+), 55 deletions(-) diff --git a/src/app/valentina/dialogs/dialoghistory.cpp b/src/app/valentina/dialogs/dialoghistory.cpp index 239b150ad..46170015f 100644 --- a/src/app/valentina/dialogs/dialoghistory.cpp +++ b/src/app/valentina/dialogs/dialoghistory.cpp @@ -59,7 +59,7 @@ DialogHistory::DialogHistory(VContainer *data, VPattern *doc, QWidget *parent) FillTable(); InitialTable(); connect(ui->tableWidget, &QTableWidget::cellClicked, this, &DialogHistory::cellClicked); - connect(this, &DialogHistory::ShowHistoryTool, doc, &VPattern::ShowHistoryTool); + connect(this, &DialogHistory::ShowHistoryTool, [doc](quint32 id, bool enable){emit doc->ShowTool(id, enable);}); connect(doc, &VPattern::ChangedCursor, this, &DialogHistory::ChangedCursor); connect(doc, &VPattern::patternChanged, this, &DialogHistory::UpdateHistory); ShowPoint(); diff --git a/src/app/valentina/dialogs/dialoglayoutprogress.cpp b/src/app/valentina/dialogs/dialoglayoutprogress.cpp index 0f236b912..d7de471bd 100644 --- a/src/app/valentina/dialogs/dialoglayoutprogress.cpp +++ b/src/app/valentina/dialogs/dialoglayoutprogress.cpp @@ -55,7 +55,7 @@ DialogLayoutProgress::DialogLayoutProgress(int count, QWidget *parent) QPushButton *bCancel = ui->buttonBox->button(QDialogButtonBox::Cancel); SCASSERT(bCancel != nullptr); - connect(bCancel, &QPushButton::clicked, this, &DialogLayoutProgress::StopWorking); + connect(bCancel, &QPushButton::clicked, [this](){emit Abort();}); setModal(true); this->setWindowFlags(Qt::Dialog | Qt::WindowTitleHint | Qt::CustomizeWindowHint); @@ -109,12 +109,6 @@ void DialogLayoutProgress::Finished() done(QDialog::Accepted); } -//--------------------------------------------------------------------------------------------------------------------- -void DialogLayoutProgress::StopWorking() -{ - emit Abort(); -} - //--------------------------------------------------------------------------------------------------------------------- void DialogLayoutProgress::showEvent(QShowEvent *event) { diff --git a/src/app/valentina/dialogs/dialoglayoutprogress.h b/src/app/valentina/dialogs/dialoglayoutprogress.h index 38eb0b96e..7f339e44f 100644 --- a/src/app/valentina/dialogs/dialoglayoutprogress.h +++ b/src/app/valentina/dialogs/dialoglayoutprogress.h @@ -54,7 +54,6 @@ public slots: void Arranged(int count); void Error(const LayoutErrors &state); void Finished(); - void StopWorking(); protected: virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index db7b7d50b..8b43bcb04 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -1052,29 +1052,6 @@ void VAbstractPattern::haveLiteChange() emit patternChanged(false); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief ShowHistoryTool hightlight tool. - * @param id tool id. - * @param enable enable or diasable hightlight. - */ -void VAbstractPattern::ShowHistoryTool(quint32 id, bool enable) -{ - emit ShowTool(id, enable); -} - -//--------------------------------------------------------------------------------------------------------------------- -void VAbstractPattern::NeedFullParsing() -{ - emit UndoCommand(); -} - -//--------------------------------------------------------------------------------------------------------------------- -void VAbstractPattern::ClearScene() -{ - emit ClearMainWindow(); -} - //--------------------------------------------------------------------------------------------------------------------- void VAbstractPattern::ToolExists(const quint32 &id) const { diff --git a/src/libs/ifc/xml/vabstractpattern.h b/src/libs/ifc/xml/vabstractpattern.h index 172f7cce3..a6b7e7ab1 100644 --- a/src/libs/ifc/xml/vabstractpattern.h +++ b/src/libs/ifc/xml/vabstractpattern.h @@ -253,9 +253,6 @@ signals: public slots: virtual void LiteParseTree(const Document &parse)=0; void haveLiteChange(); - void ShowHistoryTool(quint32 id, bool enable); - void NeedFullParsing(); - void ClearScene(); protected: /** @brief nameActivDraw name current pattern peace. */ diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp index ef7e22793..155ea6620 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp @@ -128,7 +128,7 @@ void DialogCubicBezierPath::ChosenObject(quint32 id, const SceneObject &type) if (path.CountPoints() == 1) { visPath->VisualMode(NULL_ID); - connect(visPath, &VisToolCubicBezierPath::ToolTip, this, &DialogTool::ShowVisToolTip); + connect(visPath, &VisToolCubicBezierPath::ToolTip, [this](const QString &toolTip){emit ToolTip(toolTip);}); } else { diff --git a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp index b645fa884..2ed8d355f 100644 --- a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp @@ -217,7 +217,8 @@ void DialogCurveIntersectAxis::ChosenObject(quint32 id, const SceneObject &type) { number++; line->VisualMode(id); - connect(line, &VisToolCurveIntersectAxis::ToolTip, this, &DialogTool::ShowVisToolTip); + connect(line, &VisToolCurveIntersectAxis::ToolTip, + [this](const QString &toolTip){emit ToolTip(toolTip);}); } } break; diff --git a/src/libs/vtools/dialogs/tools/dialogendline.cpp b/src/libs/vtools/dialogs/tools/dialogendline.cpp index dd668813e..a4dbe1a5e 100644 --- a/src/libs/vtools/dialogs/tools/dialogendline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogendline.cpp @@ -167,7 +167,7 @@ void DialogEndLine::ChosenObject(quint32 id, const SceneObject &type) if (SetObject(id, ui->comboBoxBasePoint, "")) { vis->VisualMode(id); - connect(vis.data(), &Visualization::ToolTip, this, &DialogTool::ShowVisToolTip); + connect(vis.data(), &Visualization::ToolTip, [this](const QString &toolTip){emit ToolTip(toolTip);}); prepare = true; } } diff --git a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp index 7f6b56f61..01a153a9b 100644 --- a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp +++ b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp @@ -242,7 +242,8 @@ void DialogLineIntersectAxis::ChosenObject(quint32 id, const SceneObject &type) { number++; line->VisualMode(id); - connect(line, &VisToolLineIntersectAxis::ToolTip, this, &DialogTool::ShowVisToolTip); + connect(line, &VisToolLineIntersectAxis::ToolTip, + [this](const QString &toolTip){emit ToolTip(toolTip);}); } break; case (1): diff --git a/src/libs/vtools/dialogs/tools/dialogrotation.cpp b/src/libs/vtools/dialogs/tools/dialogrotation.cpp index 08c8f33ae..69611de94 100644 --- a/src/libs/vtools/dialogs/tools/dialogrotation.cpp +++ b/src/libs/vtools/dialogs/tools/dialogrotation.cpp @@ -216,7 +216,7 @@ void DialogRotation::ChosenObject(quint32 id, const SceneObject &type) VisToolRotation *operation = qobject_cast(vis); SCASSERT(operation != nullptr); - connect(operation, &Visualization::ToolTip, this, &DialogTool::ShowVisToolTip); + connect(operation, &Visualization::ToolTip, [this](const QString &toolTip){emit ToolTip(toolTip);}); operation->SetOriginPointId(id); operation->RefreshGeometry(); diff --git a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp index ed4a3eb50..d025c97d3 100644 --- a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp @@ -181,7 +181,7 @@ void DialogSplinePath::ChosenObject(quint32 id, const SceneObject &type) if (path.CountPoints() == 1) { visPath->VisualMode(NULL_ID); - connect(visPath, &VisToolSplinePath::ToolTip, this, &DialogTool::ShowVisToolTip); + connect(visPath, &VisToolSplinePath::ToolTip, [this](const QString &toolTip){emit ToolTip(toolTip);}); connect(visPath, &VisToolSplinePath::PathChanged, this, &DialogSplinePath::PathUpdated); } else diff --git a/src/libs/vtools/dialogs/tools/dialogtool.cpp b/src/libs/vtools/dialogs/tools/dialogtool.cpp index 1515c9af8..5e56b1c0f 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.cpp +++ b/src/libs/vtools/dialogs/tools/dialogtool.cpp @@ -912,12 +912,6 @@ QString DialogTool::getPointName() const return pointName; } -//--------------------------------------------------------------------------------------------------------------------- -void DialogTool::ShowVisToolTip(const QString &toolTip) -{ - emit ToolTip(toolTip); -} - //--------------------------------------------------------------------------------------------------------------------- void DialogTool::ShowDialog(bool click) { diff --git a/src/libs/vtools/dialogs/tools/dialogtool.h b/src/libs/vtools/dialogs/tools/dialogtool.h index 1a5a0ee78..b227794ee 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.h +++ b/src/libs/vtools/dialogs/tools/dialogtool.h @@ -91,7 +91,6 @@ signals: */ void ToolTip(const QString &toolTip); public slots: - void ShowVisToolTip(const QString &toolTip); virtual void ChosenObject(quint32 id, const SceneObject &type); virtual void SelectedObject(bool selected, quint32 object, quint32 tool); void NamePointChanged(); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp index 7e1c32dab..b4f212b58 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp @@ -143,8 +143,8 @@ void VToolBasePoint::AddToFile() patternPiece.appendChild(doc->createElement(VAbstractPattern::TagDetails)); AddPatternPiece *addPP = new AddPatternPiece(patternPiece, doc, namePP); - connect(addPP, &AddPatternPiece::ClearScene, doc, &VAbstractPattern::ClearScene); - connect(addPP, &AddPatternPiece::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); + connect(addPP, &AddPatternPiece::ClearScene, [this](){emit doc->ClearMainWindow();}); + connect(addPP, &AddPatternPiece::NeedFullParsing, [this](){emit doc->UndoCommand();}); qApp->getUndoStack()->push(addPP); } @@ -233,7 +233,7 @@ void VToolBasePoint::DeleteTool(bool ask) qCDebug(vTool, "Begin deleting."); DeletePatternPiece *deletePP = new DeletePatternPiece(doc, nameActivDraw); - connect(deletePP, &DeletePatternPiece::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); + connect(deletePP, &DeletePatternPiece::NeedFullParsing, [this](){emit doc->UndoCommand();}); qApp->getUndoStack()->push(deletePP); // Throw exception, this will help prevent case when we forget to immediately quit function. diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.cpp b/src/libs/vtools/tools/drawTools/vdrawtool.cpp index 81bbfb172..c88ffbcfe 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.cpp +++ b/src/libs/vtools/tools/drawTools/vdrawtool.cpp @@ -372,7 +372,7 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine void VDrawTool::AddToCalculation(const QDomElement &domElement) { AddToCalc *addToCal = new AddToCalc(domElement, doc); - connect(addToCal, &AddToCalc::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); + connect(addToCal, &AddToCalc::NeedFullParsing, [this](){emit doc->UndoCommand();}); qApp->getUndoStack()->push(addToCal); } diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index ad74b4cf4..150a900f0 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -88,7 +88,7 @@ void VAbstractTool::DeleteTool(bool ask) qCDebug(vTool, "Begin deleting."); DelTool *delTool = new DelTool(doc, id); - connect(delTool, &DelTool::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); + connect(delTool, &DelTool::NeedFullParsing, [this](){emit doc->UndoCommand();}); qApp->getUndoStack()->push(delTool); // Throw exception, this will help prevent case when we forget to immediately quit function. diff --git a/src/libs/vtools/tools/vtooldetail.cpp b/src/libs/vtools/tools/vtooldetail.cpp index 9eed8d8c3..2d8041193 100644 --- a/src/libs/vtools/tools/vtooldetail.cpp +++ b/src/libs/vtools/tools/vtooldetail.cpp @@ -331,7 +331,7 @@ void VToolDetail::AddToFile() } AddDet *addDet = new AddDet(domElement, doc, detail, drawName); - connect(addDet, &AddDet::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); + connect(addDet, &AddDet::NeedFullParsing, [this](){emit doc->UndoCommand();}); qApp->getUndoStack()->push(addDet); } @@ -680,7 +680,7 @@ void VToolDetail::DeleteTool(bool ask) return; } /* If UnionDetails tool delete detail no need emit FullParsing.*/ - connect(delDet, &DeleteDetail::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); + connect(delDet, &DeleteDetail::NeedFullParsing, [this](){emit doc->UndoCommand();}); } qApp->getUndoStack()->push(delDet); From a94daf6834f11f6694e01c2f8d5822fd7c61f338 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 12:00:00 +0300 Subject: [PATCH 18/69] First implementation of Update Notification. --HG-- branch : feature --- src/app/valentina/main.cpp | 8 + src/app/valentina/valentina.pro | 9 + src/libs/fervor/LICENSE | 7 + src/libs/fervor/fervor.pri | 15 + src/libs/fervor/fervor.pro | 107 +++++ src/libs/fervor/fvavailableupdate.cpp | 74 +++ src/libs/fervor/fvavailableupdate.h | 52 +++ src/libs/fervor/fvupdater.cpp | 589 ++++++++++++++++++++++++ src/libs/fervor/fvupdater.h | 128 +++++ src/libs/fervor/fvupdatewindow.cpp | 72 +++ src/libs/fervor/fvupdatewindow.h | 53 +++ src/libs/fervor/fvupdatewindow.ui | 98 ++++ src/libs/ifc/xml/vabstractconverter.cpp | 9 +- src/libs/ifc/xml/vabstractconverter.h | 5 +- src/libs/libs.pro | 3 +- src/libs/vmisc/vcommonsettings.cpp | 13 + src/libs/vmisc/vcommonsettings.h | 8 +- 17 files changed, 1241 insertions(+), 9 deletions(-) create mode 100644 src/libs/fervor/LICENSE create mode 100644 src/libs/fervor/fervor.pri create mode 100644 src/libs/fervor/fervor.pro create mode 100644 src/libs/fervor/fvavailableupdate.cpp create mode 100644 src/libs/fervor/fvavailableupdate.h create mode 100644 src/libs/fervor/fvupdater.cpp create mode 100644 src/libs/fervor/fvupdater.h create mode 100644 src/libs/fervor/fvupdatewindow.cpp create mode 100644 src/libs/fervor/fvupdatewindow.h create mode 100644 src/libs/fervor/fvupdatewindow.ui diff --git a/src/app/valentina/main.cpp b/src/app/valentina/main.cpp index bdc2b26d0..48c3fa982 100644 --- a/src/app/valentina/main.cpp +++ b/src/app/valentina/main.cpp @@ -28,6 +28,8 @@ #include "mainwindow.h" #include "core/vapplication.h" +#include "../fervor/fvupdater.h" + #include // For QT_REQUIRE_VERSION #include @@ -55,6 +57,12 @@ int main(int argc, char *argv[]) app.InitOptions(); + // Set feed URL before doing anything else + FvUpdater::sharedUpdater()->SetFeedURL("http://localhost/updateapp/Appcast.xml"); + + // Check for updates automatically + FvUpdater::sharedUpdater()->CheckForUpdatesSilent(); + MainWindow w; #if !defined(Q_OS_MAC) app.setWindowIcon(QIcon(":/icon/64x64/icon64x64.png")); diff --git a/src/app/valentina/valentina.pro b/src/app/valentina/valentina.pro index f1c0ba838..ede57e369 100644 --- a/src/app/valentina/valentina.pro +++ b/src/app/valentina/valentina.pro @@ -536,6 +536,15 @@ DEPENDPATH += $$PWD/../../libs/vgeometry win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vgeometry/$${DESTDIR}/vgeometry.lib else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vgeometry/$${DESTDIR}/libvgeometry.a +# Fervor static library (depend on VMisc, IFC) +unix|win32: LIBS += -L$$OUT_PWD/../../libs/fervor/$${DESTDIR}/ -lfervor + +INCLUDEPATH += $$PWD/../../libs/fervor +DEPENDPATH += $$PWD/../../libs/fervor + +win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/fervor/$${DESTDIR}/fervor.lib +else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/fervor/$${DESTDIR}/libfervor.a + # IFC static library (depend on QMuParser, VMisc) unix|win32: LIBS += -L$$OUT_PWD/../../libs/ifc/$${DESTDIR}/ -lifc diff --git a/src/libs/fervor/LICENSE b/src/libs/fervor/LICENSE new file mode 100644 index 000000000..d9c310de8 --- /dev/null +++ b/src/libs/fervor/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2012 Linas Valiukas and others. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/libs/fervor/fervor.pri b/src/libs/fervor/fervor.pri new file mode 100644 index 000000000..2cac3bc15 --- /dev/null +++ b/src/libs/fervor/fervor.pri @@ -0,0 +1,15 @@ +# ADD TO EACH PATH $$PWD VARIABLE!!!!!! +# This need for corect working file translations.pro + +SOURCES += \ + $$PWD/fvupdatewindow.cpp \ + $$PWD/fvupdater.cpp \ + $$PWD/fvavailableupdate.cpp + +HEADERS += \ + $$PWD/fvupdatewindow.h \ + $$PWD/fvupdater.h \ + $$PWD/fvavailableupdate.h + +FORMS += \ + $$PWD/fvupdatewindow.ui diff --git a/src/libs/fervor/fervor.pro b/src/libs/fervor/fervor.pro new file mode 100644 index 000000000..e6a45f916 --- /dev/null +++ b/src/libs/fervor/fervor.pro @@ -0,0 +1,107 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2016-07-14T11:55:03 +# +#------------------------------------------------- + +# File with common stuff for whole project +include(../../../common.pri) + +QT += network widgets + +# Name of library +TARGET = fervor + +# We want to create a library +TEMPLATE = lib + +CONFIG += \ + staticlib \# Making static library + c++11 # We use C++11 standard + +# Use out-of-source builds (shadow builds) +CONFIG -= debug_and_release debug_and_release_target + +# Since Qt 5.4.0 the source code location is recorded only in debug builds. +# We need this information also in release builds. For this need define QT_MESSAGELOGCONTEXT. +DEFINES += QT_MESSAGELOGCONTEXT + +include(fervor.pri) + +# This is static library so no need in "make install" + +# directory for executable file +DESTDIR = bin + +# files created moc +MOC_DIR = moc + +# objecs files +OBJECTS_DIR = obj + +# Directory for files created uic +UI_DIR = uic + +# Set using ccache. Function enable_ccache() defined in common.pri. +$$enable_ccache() + +CONFIG(debug, debug|release){ + # Debug mode + unix { + #Turn on compilers warnings. + *-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } + } + clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + } + *-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + } + } else { + *-g++{ + QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + } + } + +}else{ + # Release mode + !win32-msvc*:CONFIG += silent + DEFINES += V_NO_ASSERT + !unix:*-g++{ + QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll + } + + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols + # do nothing + } else { + !macx:!win32-msvc*{ + # Turn on debug symbols in release mode on Unix systems. + # On Mac OS X temporarily disabled. TODO: find way how to strip binary file. + QMAKE_CXXFLAGS_RELEASE += -g -gdwarf-3 + QMAKE_CFLAGS_RELEASE += -g -gdwarf-3 + QMAKE_LFLAGS_RELEASE = + } + } +} diff --git a/src/libs/fervor/fvavailableupdate.cpp b/src/libs/fervor/fvavailableupdate.cpp new file mode 100644 index 000000000..daf5e0997 --- /dev/null +++ b/src/libs/fervor/fvavailableupdate.cpp @@ -0,0 +1,74 @@ +/*************************************************************************************************** + ** + ** Copyright (c) 2012 Linas Valiukas and others. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a copy of this + ** software and associated documentation files (the "Software"), to deal in the Software + ** without restriction, including without limitation the rights to use, copy, modify, + ** merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + ** permit persons to whom the Software is furnished to do so, subject to the following conditions: + ** + ** The above copyright notice and this permission notice shall be included in all copies or + ** substantial portions of the Software. + ** + ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + ** NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ** + ******************************************************************************************************/ + +#include "fvavailableupdate.h" + +//--------------------------------------------------------------------------------------------------------------------- +FvAvailableUpdate::FvAvailableUpdate(QObject *parent) + : QObject(parent), + m_enclosureUrl(), + m_enclosureVersion(), + m_enclosurePlatform() +{ + // noop +} + +//--------------------------------------------------------------------------------------------------------------------- +QUrl FvAvailableUpdate::GetEnclosureUrl() const +{ + return m_enclosureUrl; +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvAvailableUpdate::SetEnclosureUrl(const QUrl &enclosureUrl) +{ + m_enclosureUrl = enclosureUrl; +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvAvailableUpdate::SetEnclosureUrl(const QString &enclosureUrl) +{ + SetEnclosureUrl(QUrl(enclosureUrl)); +} + +//--------------------------------------------------------------------------------------------------------------------- +QString FvAvailableUpdate::GetEnclosureVersion() const +{ + return m_enclosureVersion; +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvAvailableUpdate::SetEnclosureVersion(const QString &enclosureVersion) +{ + m_enclosureVersion = enclosureVersion; +} + +//--------------------------------------------------------------------------------------------------------------------- +QString FvAvailableUpdate::GetEnclosurePlatform() const +{ + return m_enclosurePlatform; +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvAvailableUpdate::SetEnclosurePlatform(const QString &enclosurePlatform) +{ + m_enclosurePlatform = enclosurePlatform; +} diff --git a/src/libs/fervor/fvavailableupdate.h b/src/libs/fervor/fvavailableupdate.h new file mode 100644 index 000000000..7192df064 --- /dev/null +++ b/src/libs/fervor/fvavailableupdate.h @@ -0,0 +1,52 @@ +/*************************************************************************************************** + ** + ** Copyright (c) 2012 Linas Valiukas and others. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a copy of this + ** software and associated documentation files (the "Software"), to deal in the Software + ** without restriction, including without limitation the rights to use, copy, modify, + ** merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + ** permit persons to whom the Software is furnished to do so, subject to the following conditions: + ** + ** The above copyright notice and this permission notice shall be included in all copies or + ** substantial portions of the Software. + ** + ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + ** NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ** + ******************************************************************************************************/ + +#ifndef FVAVAILABLEUPDATE_H +#define FVAVAILABLEUPDATE_H + +#include +#include + +class FvAvailableUpdate : public QObject +{ + Q_OBJECT +public: + explicit FvAvailableUpdate(QObject *parent = nullptr); + + QUrl GetEnclosureUrl() const; + void SetEnclosureUrl(const QUrl &enclosureUrl); + void SetEnclosureUrl(const QString &enclosureUrl); + + QString GetEnclosureVersion() const; + void SetEnclosureVersion(const QString &enclosureVersion); + + QString GetEnclosurePlatform() const; + void SetEnclosurePlatform(const QString &enclosurePlatform); + +private: + Q_DISABLE_COPY(FvAvailableUpdate) + + QUrl m_enclosureUrl; + QString m_enclosureVersion; + QString m_enclosurePlatform; +}; + +#endif // FVAVAILABLEUPDATE_H diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp new file mode 100644 index 000000000..fd41e71e1 --- /dev/null +++ b/src/libs/fervor/fvupdater.cpp @@ -0,0 +1,589 @@ +/*************************************************************************************************** + ** + ** Copyright (c) 2012 Linas Valiukas and others. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a copy of this + ** software and associated documentation files (the "Software"), to deal in the Software + ** without restriction, including without limitation the rights to use, copy, modify, + ** merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + ** permit persons to whom the Software is furnished to do so, subject to the following conditions: + ** + ** The above copyright notice and this permission notice shall be included in all copies or + ** substantial portions of the Software. + ** + ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + ** NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ** + ******************************************************************************************************/ + +#include "fvupdater.h" +#include "../vmisc/projectversion.h" +#include "../vmisc/vabstractapplication.h" +#include "../ifc/xml/vabstractconverter.h" +#include "../ifc/exception/vexception.h" + +#include +#include +#include +#include + +QPointer FvUpdater::m_Instance; + +//--------------------------------------------------------------------------------------------------------------------- +FvUpdater* FvUpdater::sharedUpdater() +{ + static QMutex mutex; + if (m_Instance.isNull()) + { + mutex.lock(); + + if (m_Instance.isNull()) + { + m_Instance = new FvUpdater; + } + + mutex.unlock(); + } + + return m_Instance.data(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::drop() +{ + static QMutex mutex; + mutex.lock(); + delete m_Instance; + mutex.unlock(); +} + +//--------------------------------------------------------------------------------------------------------------------- +FvUpdater::FvUpdater() + : QObject(nullptr), + m_updaterWindow(nullptr), + m_proposedUpdate(nullptr), + m_silentAsMuchAsItCouldGet(true), + m_feedURL(), + m_qnam(), + m_reply(nullptr), + m_httpRequestAborted(false), + m_xml() +{ + // noop +} + +//--------------------------------------------------------------------------------------------------------------------- +FvUpdater::~FvUpdater() +{ + hideUpdaterWindow(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::showUpdaterWindowUpdatedWithCurrentUpdateProposal() +{ + // Destroy window if already exists + hideUpdaterWindow(); + + // Create a new window + m_updaterWindow = new FvUpdateWindow(qApp->getMainWindow()); + m_updaterWindow->UpdateWindowWithCurrentProposedUpdate(); + m_updaterWindow->show(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::hideUpdaterWindow() +{ + if (m_updaterWindow) + { + m_updaterWindow->close(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::SetFeedURL(const QUrl &feedURL) +{ + m_feedURL = feedURL; +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::SetFeedURL(const QString &feedURL) +{ + SetFeedURL(QUrl(feedURL)); +} + +//--------------------------------------------------------------------------------------------------------------------- +QString FvUpdater::GetFeedURL() const +{ + return m_feedURL.toString(); +} + +//--------------------------------------------------------------------------------------------------------------------- +QPointer FvUpdater::GetProposedUpdate() +{ + return m_proposedUpdate; +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::InstallUpdate() +{ + qDebug() << "Install update"; + + UpdateInstallationConfirmed(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::SkipUpdate() +{ + qDebug() << "Skip update"; + + FvAvailableUpdate* proposedUpdate = GetProposedUpdate(); + if (not proposedUpdate) + { + qWarning() << "Proposed update is NULL (shouldn't be at this point)"; + return; + } + + // Start ignoring this particular version + IgnoreVersion(proposedUpdate->GetEnclosureVersion()); + + hideUpdaterWindow(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::RemindMeLater() +{ + qDebug() << "Remind me later"; + + hideUpdaterWindow(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::UpdateInstallationConfirmed() +{ + qDebug() << "Confirm update installation"; + + QPointer proposedUpdate = GetProposedUpdate(); + if (proposedUpdate.isNull()) + { + qWarning() << "Proposed update is NULL (shouldn't be at this point)"; + return; + } + + // Open a link + if (not QDesktopServices::openUrl(proposedUpdate->GetEnclosureUrl())) + { + showErrorDialog(tr("Unable to open a browser."), true); + return; + } + + hideUpdaterWindow(); +} + +//--------------------------------------------------------------------------------------------------------------------- +bool FvUpdater::CheckForUpdates(bool silentAsMuchAsItCouldGet) +{ + if (m_feedURL.isEmpty()) + { + qCritical() << "Please set feed URL via setFeedURL() before calling CheckForUpdates()."; + return false; + } + + m_silentAsMuchAsItCouldGet = silentAsMuchAsItCouldGet; + + // Check if application's organization name and domain are set, fail otherwise + // (nowhere to store QSettings to) + if (QApplication::organizationName().isEmpty()) + { + qCritical() << "QApplication::organizationName is not set. Please do that."; + return false; + } + if (QApplication::organizationDomain().isEmpty()) + { + qCritical() << "QApplication::organizationDomain is not set. Please do that."; + return false; + } + + // Set application name / version is not set yet + if (QApplication::applicationName().isEmpty()) + { + qCritical() << "QApplication::applicationName is not set. Please do that."; + return false; + } + + if (QApplication::applicationVersion().isEmpty()) + { + qCritical() << "QApplication::applicationVersion is not set. Please do that."; + return false; + } + + cancelDownloadFeed(); + m_httpRequestAborted = false; + startDownloadFeed(m_feedURL); + + return true; +} + +//--------------------------------------------------------------------------------------------------------------------- +bool FvUpdater::CheckForUpdatesSilent() +{ + return CheckForUpdates(true); +} + +//--------------------------------------------------------------------------------------------------------------------- +bool FvUpdater::CheckForUpdatesNotSilent() +{ + return CheckForUpdates(false); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::startDownloadFeed(const QUrl &url) +{ + m_xml.clear(); + + QNetworkRequest request; + request.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/xml")); + request.setHeader(QNetworkRequest::UserAgentHeader, QApplication::applicationName()); + request.setUrl(url); + + m_reply = m_qnam.get(request); + + connect(m_reply, &QNetworkReply::readyRead, this, &FvUpdater::httpFeedReadyRead); + connect(m_reply, &QNetworkReply::downloadProgress, this, &FvUpdater::httpFeedUpdateDataReadProgress); + connect(m_reply, &QNetworkReply::finished, this, &FvUpdater::httpFeedDownloadFinished); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::cancelDownloadFeed() +{ + if (m_reply) + { + m_httpRequestAborted = true; + m_reply->abort(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::httpFeedReadyRead() +{ + // this slot gets called every time the QNetworkReply has new data. + // We read all of its new data and write it into the file. + // That way we use less RAM than when reading it at the finished() + // signal of the QNetworkReply + m_xml.addData(m_reply->readAll()); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::httpFeedUpdateDataReadProgress(qint64 bytesRead, qint64 totalBytes) +{ + Q_UNUSED(bytesRead); + Q_UNUSED(totalBytes); + + if (m_httpRequestAborted) + { + return; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::httpFeedDownloadFinished() +{ + if (m_httpRequestAborted) + { + m_reply->deleteLater(); + return; + } + + const QVariant redirectionTarget = m_reply->attribute(QNetworkRequest::RedirectionTargetAttribute); + if (m_reply->error()) + { + // Error. + showErrorDialog(tr("Feed download failed: %1.").arg(m_reply->errorString()), false); + } + else if (not redirectionTarget.isNull()) + { + const QUrl newUrl = m_feedURL.resolved(redirectionTarget.toUrl()); + + m_feedURL = newUrl; + m_reply->deleteLater(); + + startDownloadFeed(m_feedURL); + return; + } + else + { + // Done. + xmlParseFeed(); + } + + m_reply->deleteLater(); + m_reply = 0; +} + +//--------------------------------------------------------------------------------------------------------------------- +bool FvUpdater::xmlParseFeed() +{ + QString xmlEnclosureUrl, xmlEnclosureVersion, xmlEnclosurePlatform; + + // Parse + while (not m_xml.atEnd()) + { + m_xml.readNext(); + + if (m_xml.isStartElement()) + { + if (m_xml.name() == QLatin1Literal("item")) + { + xmlEnclosureUrl.clear(); + xmlEnclosureVersion.clear(); + xmlEnclosurePlatform.clear(); + } + else if (m_xml.name() == QLatin1Literal("enclosure")) + { + const QXmlStreamAttributes attribs = m_xml.attributes(); + const QString fervorPlatform = QStringLiteral("fervor:platform"); + + if (attribs.hasAttribute(fervorPlatform)) + { + if (CurrentlyRunningOnPlatform(attribs.value(fervorPlatform).toString().trimmed())) + { + xmlEnclosurePlatform = attribs.value(fervorPlatform).toString().trimmed(); + + const QString attributeUrl = QStringLiteral("url"); + if (attribs.hasAttribute(attributeUrl)) + { + xmlEnclosureUrl = attribs.value(attributeUrl).toString().trimmed(); + } + else + { + xmlEnclosureUrl.clear(); + } + + const QString fervorVersion = QStringLiteral("fervor:version"); + if (attribs.hasAttribute(fervorVersion)) + { + const QString candidateVersion = attribs.value(fervorVersion).toString().trimmed(); + if (not candidateVersion.isEmpty()) + { + xmlEnclosureVersion = candidateVersion; + } + } + } + } + } + } + else if (m_xml.isEndElement()) + { + if (m_xml.name() == QLatin1Literal("item")) + { + // That's it - we have analyzed a single and we'll stop + // here (because the topmost is the most recent one, and thus + // the newest version. + + return searchDownloadedFeedForUpdates(xmlEnclosureUrl, + xmlEnclosureVersion, + xmlEnclosurePlatform); + } + } + + if (m_xml.error() && m_xml.error() != QXmlStreamReader::PrematureEndOfDocumentError) + { + showErrorDialog(tr("Feed parsing failed: %1 %2.").arg(QString::number(m_xml.lineNumber()), + m_xml.errorString()), false); + return false; + + } + } + + // No updates were found if we're at this point + // (not a single element found) + showInformationDialog(tr("No updates were found."), false); + + return false; +} + +//--------------------------------------------------------------------------------------------------------------------- +bool FvUpdater::searchDownloadedFeedForUpdates(const QString &xmlEnclosureUrl, + const QString &xmlEnclosureVersion, + const QString &xmlEnclosurePlatform) +{ + qDebug() << "Enclosure URL:" << xmlEnclosureUrl; + qDebug() << "Enclosure version:" << xmlEnclosureVersion; + qDebug() << "Enclosure platform:" << xmlEnclosurePlatform; + + // Validate + if (xmlEnclosureUrl.isEmpty() || xmlEnclosureVersion.isEmpty() || xmlEnclosurePlatform.isEmpty()) + { + showErrorDialog(tr("Feed error: invalid \"enclosure\" with the download link"), false); + return false; + } + + // Relevant version? + if (VersionIsIgnored(xmlEnclosureVersion)) + { + qDebug() << "Version '" << xmlEnclosureVersion << "' is ignored, too old or something like that."; + + showInformationDialog(tr("No updates were found."), false); + + return true; // Things have succeeded when you think of it. + } + + // + // Success! At this point, we have found an update that can be proposed + // to the user. + // + + if (m_proposedUpdate) + { + delete m_proposedUpdate; + } + m_proposedUpdate = new FvAvailableUpdate(this); + m_proposedUpdate->SetEnclosureUrl(xmlEnclosureUrl); + m_proposedUpdate->SetEnclosureVersion(xmlEnclosureVersion); + m_proposedUpdate->SetEnclosurePlatform(xmlEnclosurePlatform); + + // Show "look, there's an update" window + showUpdaterWindowUpdatedWithCurrentUpdateProposal(); + + return true; +} + +//--------------------------------------------------------------------------------------------------------------------- +bool FvUpdater::VersionIsIgnored(const QString &version) +{ + // We assume that variable 'version' contains either: + // 1) The current version of the application (ignore) + // 2) The version that was skipped before and thus stored in QSettings (ignore) + // 3) A newer version (don't ignore) + // 'version' is not likely to contain an older version in any case. + + int decVersion = 0x0; + try + { + decVersion = VAbstractConverter::GetVersion(version); + } + catch (const VException &e) + { + Q_UNUSED(e) + return true; // Ignore invalid version + } + + if (decVersion == APP_VERSION) + { + return true; + } + + const int lastSkippedVersion = qApp->Settings()->GetLatestSkippedVersion(); + if (lastSkippedVersion != 0x0) + { + if (decVersion == lastSkippedVersion) + { + // Implicitly skipped version - skip + return true; + } + } + + if (decVersion > APP_VERSION) + { + // Newer version - do not skip + return false; + } + + // Fallback - skip + return true; +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::IgnoreVersion(const QString &version) +{ + int decVersion = 0x0; + try + { + decVersion = VAbstractConverter::GetVersion(version); + } + catch (const VException &e) + { + Q_UNUSED(e) + return ; // Ignore invalid version + } + + if (decVersion == APP_VERSION) + { + // Don't ignore the current version + return; + } + + qApp->Settings()->SetLatestSkippedVersion(decVersion); +} + +//--------------------------------------------------------------------------------------------------------------------- +bool FvUpdater::CurrentlyRunningOnPlatform(const QString &platform) +{ + const QStringList platforms = QStringList() << "Q_OS_LINUX" + << "Q_OS_MAC" + << "Q_OS_WIN32"; + + switch (platforms.indexOf(platform.toUpper().trimmed())) + { + case 0: // Q_OS_LINUX +#ifdef Q_OS_LINUX // Defined on Linux. + return true; +#endif + break; + case 1: // Q_OS_MAC +#ifdef Q_OS_MAC // Defined on MAC OS (synonym for Darwin). + return true; +#endif + break; + case 2: // Q_OS_WIN32 +#ifdef Q_OS_WIN32 // Defined on all supported versions of Windows. + return true; +#endif + break; + default: + break; + } + + // Fallback + return false; +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::showErrorDialog(const QString &message, bool showEvenInSilentMode) +{ + if (m_silentAsMuchAsItCouldGet) + { + if (not showEvenInSilentMode) + { + // Don't show errors in the silent mode + return; + } + } + + QMessageBox dlFailedMsgBox; + dlFailedMsgBox.setIcon(QMessageBox::Critical); + dlFailedMsgBox.setText(tr("Error")); + dlFailedMsgBox.setInformativeText(message); + dlFailedMsgBox.exec(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void FvUpdater::showInformationDialog(const QString &message, bool showEvenInSilentMode) +{ + if (m_silentAsMuchAsItCouldGet) + { + if (not showEvenInSilentMode) + { + // Don't show information dialogs in the silent mode + return; + } + } + + QMessageBox dlInformationMsgBox; + dlInformationMsgBox.setIcon(QMessageBox::Information); + dlInformationMsgBox.setText(tr("Information")); + dlInformationMsgBox.setInformativeText(message); + dlInformationMsgBox.exec(); +} diff --git a/src/libs/fervor/fvupdater.h b/src/libs/fervor/fvupdater.h new file mode 100644 index 000000000..0191ae589 --- /dev/null +++ b/src/libs/fervor/fvupdater.h @@ -0,0 +1,128 @@ +/*************************************************************************************************** + ** + ** Copyright (c) 2012 Linas Valiukas and others. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a copy of this + ** software and associated documentation files (the "Software"), to deal in the Software + ** without restriction, including without limitation the rights to use, copy, modify, + ** merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + ** permit persons to whom the Software is furnished to do so, subject to the following conditions: + ** + ** The above copyright notice and this permission notice shall be included in all copies or + ** substantial portions of the Software. + ** + ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + ** NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ** + ******************************************************************************************************/ + +#ifndef FVUPDATER_H +#define FVUPDATER_H + +#include +#include +#include +#include +#include +#include + +#include "fvupdatewindow.h" +#include "fvavailableupdate.h" + +class FvUpdater : public QObject +{ + Q_OBJECT + +public: + // Singleton + static FvUpdater* sharedUpdater(); + static void drop(); + + // Set / get feed URL + void SetFeedURL(const QUrl &feedURL); + void SetFeedURL(const QString &feedURL); + QString GetFeedURL() const; + +public slots: + // Check for updates + bool CheckForUpdates(bool silentAsMuchAsItCouldGet = true); + + // Aliases + bool CheckForUpdatesSilent(); + bool CheckForUpdatesNotSilent(); + +protected: + friend class FvUpdateWindow; // Uses GetProposedUpdate() and others + QPointer GetProposedUpdate(); + +protected slots: + // Update window button slots + void InstallUpdate(); + void SkipUpdate(); + void RemindMeLater(); + + // Update confirmation dialog button slots + void UpdateInstallationConfirmed(); + +private slots: + void httpFeedReadyRead(); + void httpFeedUpdateDataReadProgress(qint64 bytesRead, qint64 totalBytes); + void httpFeedDownloadFinished(); + +private: + // + // Singleton business + // + Q_DISABLE_COPY(FvUpdater) + FvUpdater(); // Hide main constructor + virtual ~FvUpdater(); // Hide main destructor + + static QPointer m_Instance; // Singleton instance + + QPointer m_updaterWindow; // Updater window (NULL if not shown) + + // Available update (NULL if not fetched) + QPointer m_proposedUpdate; + + // If true, don't show the error dialogs and the "no updates." dialog + // (silentAsMuchAsItCouldGet from CheckForUpdates() goes here) + // Useful for automatic update checking upon application startup. + bool m_silentAsMuchAsItCouldGet; + + // + // HTTP feed fetcher infrastructure + // + QUrl m_feedURL; // Feed URL that will be fetched + QNetworkAccessManager m_qnam; + QNetworkReply* m_reply; + bool m_httpRequestAborted; + + QXmlStreamReader m_xml; // XML data collector and parser + + void showUpdaterWindowUpdatedWithCurrentUpdateProposal(); // Show updater window + void hideUpdaterWindow(); // Hide + destroy m_updaterWindow + + void startDownloadFeed(const QUrl &url); // Start downloading feed + void cancelDownloadFeed(); // Stop downloading the current feed + + // Dialogs (notifications) + // Show an error message + void showErrorDialog(const QString &message, bool showEvenInSilentMode = false); + // Show an informational message + void showInformationDialog(const QString &message, bool showEvenInSilentMode = false); + + + bool xmlParseFeed(); // Parse feed in m_xml + bool searchDownloadedFeedForUpdates(const QString &xmlEnclosureUrl, + const QString &xmlEnclosureVersion, + const QString &xmlEnclosurePlatform); + + static bool VersionIsIgnored(const QString &version); + static void IgnoreVersion(const QString &version); + static bool CurrentlyRunningOnPlatform(const QString &platform); +}; + +#endif // FVUPDATER_H diff --git a/src/libs/fervor/fvupdatewindow.cpp b/src/libs/fervor/fvupdatewindow.cpp new file mode 100644 index 000000000..16525e05e --- /dev/null +++ b/src/libs/fervor/fvupdatewindow.cpp @@ -0,0 +1,72 @@ +/*************************************************************************************************** + ** + ** Copyright (c) 2012 Linas Valiukas and others. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a copy of this + ** software and associated documentation files (the "Software"), to deal in the Software + ** without restriction, including without limitation the rights to use, copy, modify, + ** merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + ** permit persons to whom the Software is furnished to do so, subject to the following conditions: + ** + ** The above copyright notice and this permission notice shall be included in all copies or + ** substantial portions of the Software. + ** + ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + ** NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ** + ******************************************************************************************************/ + +#include "fvupdatewindow.h" +#include "ui_fvupdatewindow.h" +#include "fvupdater.h" +#include "fvavailableupdate.h" + +#include +#include +#include + +//--------------------------------------------------------------------------------------------------------------------- +FvUpdateWindow::FvUpdateWindow(QWidget *parent) + : QDialog(parent), + m_ui(new Ui::FvUpdateWindow), + m_appIconScene(nullptr) +{ + m_ui->setupUi(this); + + // Delete on close + setAttribute(Qt::WA_DeleteOnClose, true); + + // Set the "new version is available" string + const QString newVersString = m_ui->newVersionIsAvailableLabel->text().arg(qApp->applicationDisplayName()); + m_ui->newVersionIsAvailableLabel->setText(newVersString); + + // Connect buttons + connect(m_ui->installUpdateButton, &QPushButton::clicked, FvUpdater::sharedUpdater(), &FvUpdater::InstallUpdate); + connect(m_ui->skipThisVersionButton, &QPushButton::clicked, FvUpdater::sharedUpdater(), &FvUpdater::SkipUpdate); + connect(m_ui->remindMeLaterButton, &QPushButton::clicked, FvUpdater::sharedUpdater(), &FvUpdater::RemindMeLater); +} + +//--------------------------------------------------------------------------------------------------------------------- +FvUpdateWindow::~FvUpdateWindow() +{ + delete m_ui; +} + +//--------------------------------------------------------------------------------------------------------------------- +bool FvUpdateWindow::UpdateWindowWithCurrentProposedUpdate() +{ + QPointer proposedUpdate = FvUpdater::sharedUpdater()->GetProposedUpdate(); + if (proposedUpdate.isNull()) + { + return false; + } + + const QString downloadString = m_ui->wouldYouLikeToDownloadLabel->text() + .arg(qApp->applicationDisplayName(), proposedUpdate->GetEnclosureVersion(), qApp->applicationVersion()); + m_ui->wouldYouLikeToDownloadLabel->setText(downloadString); + + return true; +} diff --git a/src/libs/fervor/fvupdatewindow.h b/src/libs/fervor/fvupdatewindow.h new file mode 100644 index 000000000..37cbacd4c --- /dev/null +++ b/src/libs/fervor/fvupdatewindow.h @@ -0,0 +1,53 @@ +/*************************************************************************************************** + ** + ** Copyright (c) 2012 Linas Valiukas and others. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a copy of this + ** software and associated documentation files (the "Software"), to deal in the Software + ** without restriction, including without limitation the rights to use, copy, modify, + ** merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + ** permit persons to whom the Software is furnished to do so, subject to the following conditions: + ** + ** The above copyright notice and this permission notice shall be included in all copies or + ** substantial portions of the Software. + ** + ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT + ** NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + ** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ** + ******************************************************************************************************/ + +#ifndef FVUPDATEWINDOW_H +#define FVUPDATEWINDOW_H + +#include + +class QGraphicsScene; + +namespace Ui +{ + class FvUpdateWindow; +} + +class FvUpdateWindow : public QDialog +{ + Q_OBJECT + +public: + explicit FvUpdateWindow(QWidget *parent = nullptr); + virtual ~FvUpdateWindow(); + + // Update the current update proposal from FvUpdater + bool UpdateWindowWithCurrentProposedUpdate(); + +private: + Q_DISABLE_COPY(FvUpdateWindow) + + Ui::FvUpdateWindow* m_ui; + QGraphicsScene* m_appIconScene; + +}; + +#endif // FVUPDATEWINDOW_H diff --git a/src/libs/fervor/fvupdatewindow.ui b/src/libs/fervor/fvupdatewindow.ui new file mode 100644 index 000000000..da38a53f5 --- /dev/null +++ b/src/libs/fervor/fvupdatewindow.ui @@ -0,0 +1,98 @@ + + + FvUpdateWindow + + + + 0 + 0 + 520 + 95 + + + + Software Update + + + + :/icon/64x64/icon64x64.png:/icon/64x64/icon64x64.png + + + + + + + + + 75 + true + + + + A new version of %1 is available! + + + + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + + + + + + Skip This Version + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Remind Me Later + + + + + + + + + + Get Update + + + true + + + true + + + + + + + + + + + + + + diff --git a/src/libs/ifc/xml/vabstractconverter.cpp b/src/libs/ifc/xml/vabstractconverter.cpp index 2c89eda77..079da3610 100644 --- a/src/libs/ifc/xml/vabstractconverter.cpp +++ b/src/libs/ifc/xml/vabstractconverter.cpp @@ -33,6 +33,7 @@ #include #include #include +#include //--------------------------------------------------------------------------------------------------------------------- VAbstractConverter::VAbstractConverter(const QString &fileName) @@ -107,7 +108,7 @@ QString VAbstractConverter::GetVersionStr() const } //--------------------------------------------------------------------------------------------------------------------- -int VAbstractConverter::GetVersion(const QString &version) const +int VAbstractConverter::GetVersion(const QString &version) { ValidateVersion(version); @@ -138,11 +139,11 @@ int VAbstractConverter::GetVersion(const QString &version) const } //--------------------------------------------------------------------------------------------------------------------- -void VAbstractConverter::ValidateVersion(const QString &version) const +void VAbstractConverter::ValidateVersion(const QString &version) { - const QRegExp rx(QStringLiteral("^(0|([1-9][0-9]*)).(0|([1-9][0-9]*)).(0|([1-9][0-9]*))$")); + const QRegularExpression rx(QStringLiteral("^(0|([1-9][0-9]*)).(0|([1-9][0-9]*)).(0|([1-9][0-9]*))$")); - if (rx.exactMatch(version) == false) + if (rx.match(version).hasMatch() == false) { const QString errorMsg(tr("Version \"%1\" invalid.").arg(version)); throw VException(errorMsg); diff --git a/src/libs/ifc/xml/vabstractconverter.h b/src/libs/ifc/xml/vabstractconverter.h index 5a3060664..6a7a28992 100644 --- a/src/libs/ifc/xml/vabstractconverter.h +++ b/src/libs/ifc/xml/vabstractconverter.h @@ -43,12 +43,13 @@ public: void Convert(); virtual bool SaveDocument(const QString &fileName, QString &error) const Q_DECL_OVERRIDE; + static int GetVersion(const QString &version); + protected: int ver; QString fileName; void ValidateInputFile(const QString ¤tSchema) const; - int GetVersion(const QString &version) const; Q_NORETURN void InvalidVersion(int ver) const; void Save() const; void SetVersion(const QString &version); @@ -72,7 +73,7 @@ private: QString GetVersionStr() const; - void ValidateVersion(const QString &version) const; + static void ValidateVersion(const QString &version); void ReserveFile() const; }; diff --git a/src/libs/libs.pro b/src/libs/libs.pro index af365e150..334d77b84 100644 --- a/src/libs/libs.pro +++ b/src/libs/libs.pro @@ -11,4 +11,5 @@ SUBDIRS = \ vmisc \ vwidgets \ vtools \ - vformat + vformat \ + fervor diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index 82daa3b75..5c8686b78 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -65,6 +65,7 @@ const QString VCommonSettings::SettingGeneralGeometry = QString const QString VCommonSettings::SettingGeneralWindowState = QStringLiteral("windowState"); const QString VCommonSettings::SettingGeneralToolbarsState = QStringLiteral("toolbarsState"); const QString VCommonSettings::SettingPreferenceDialogSize = QStringLiteral("preferenceDialogSize"); +const QString VCommonSettings::SettingLatestSkippedVersion = QStringLiteral("lastestSkippedVersion"); static const QString commonIniFilename = QStringLiteral("common"); @@ -429,3 +430,15 @@ void VCommonSettings::SetPreferenceDialogSize(const QSize& sz) { setValue(SettingPreferenceDialogSize, sz); } + +//--------------------------------------------------------------------------------------------------------------------- +int VCommonSettings::GetLatestSkippedVersion() const +{ + return value(SettingLatestSkippedVersion, 0x0).toInt(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCommonSettings::SetLatestSkippedVersion(int value) +{ + setValue(SettingLatestSkippedVersion, value); +} diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index d8e516282..42d954348 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -99,8 +99,11 @@ public: QByteArray GetToolbarsState() const; void SetToolbarsState(const QByteArray &value); - QSize GetPreferenceDialogSize() const; - void SetPreferenceDialogSize(const QSize& sz); + QSize GetPreferenceDialogSize() const; + void SetPreferenceDialogSize(const QSize& sz); + + int GetLatestSkippedVersion() const; + void SetLatestSkippedVersion(int value); private: Q_DISABLE_COPY(VCommonSettings) @@ -128,6 +131,7 @@ private: static const QString SettingGeneralWindowState; static const QString SettingGeneralToolbarsState; static const QString SettingPreferenceDialogSize; + static const QString SettingLatestSkippedVersion; }; #endif // VCOMMONSETTINGS_H From 1e6dc7c0a826522cf6c208e91c5a2bf66545ad5b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 12:03:19 +0300 Subject: [PATCH 19/69] Use QPointer class. --HG-- branch : feature --- src/libs/fervor/fvupdater.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp index fd41e71e1..00a10f146 100644 --- a/src/libs/fervor/fvupdater.cpp +++ b/src/libs/fervor/fvupdater.cpp @@ -139,8 +139,8 @@ void FvUpdater::SkipUpdate() { qDebug() << "Skip update"; - FvAvailableUpdate* proposedUpdate = GetProposedUpdate(); - if (not proposedUpdate) + QPointer proposedUpdate = GetProposedUpdate(); + if (proposedUpdate.isNull()) { qWarning() << "Proposed update is NULL (shouldn't be at this point)"; return; From d61c1c13bfe39c4eadc03a40b09fe6c1c8fba797 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 12:30:55 +0300 Subject: [PATCH 20/69] Check one day and try remind again. --HG-- branch : feature --- src/libs/fervor/fvupdater.cpp | 11 ++++++++++- src/libs/vmisc/vcommonsettings.cpp | 14 ++++++++++++++ src/libs/vmisc/vcommonsettings.h | 4 ++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp index 00a10f146..9e7f3adfd 100644 --- a/src/libs/fervor/fvupdater.cpp +++ b/src/libs/fervor/fvupdater.cpp @@ -157,6 +157,8 @@ void FvUpdater::RemindMeLater() { qDebug() << "Remind me later"; + qApp->Settings()->SetDateOfLastRemind(QDate::currentDate()); + hideUpdaterWindow(); } @@ -229,7 +231,14 @@ bool FvUpdater::CheckForUpdates(bool silentAsMuchAsItCouldGet) //--------------------------------------------------------------------------------------------------------------------- bool FvUpdater::CheckForUpdatesSilent() { - return CheckForUpdates(true); + if (qApp->Settings()->GetDateOfLastRemind().daysTo(QDate::currentDate()) >= 1) + { + return CheckForUpdates(true); + } + else + { + return true; + } } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index 5c8686b78..a21ded0e7 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include "../ifc/ifcdef.h" @@ -66,6 +67,7 @@ const QString VCommonSettings::SettingGeneralWindowState = QString const QString VCommonSettings::SettingGeneralToolbarsState = QStringLiteral("toolbarsState"); const QString VCommonSettings::SettingPreferenceDialogSize = QStringLiteral("preferenceDialogSize"); const QString VCommonSettings::SettingLatestSkippedVersion = QStringLiteral("lastestSkippedVersion"); +const QString VCommonSettings::SettingDateOfLastRemind = QStringLiteral("dateOfLastRemind"); static const QString commonIniFilename = QStringLiteral("common"); @@ -442,3 +444,15 @@ void VCommonSettings::SetLatestSkippedVersion(int value) { setValue(SettingLatestSkippedVersion, value); } + +//--------------------------------------------------------------------------------------------------------------------- +QDate VCommonSettings::GetDateOfLastRemind() const +{ + return value(SettingDateOfLastRemind, QDate(1900, 1, 1)).toDate(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCommonSettings::SetDateOfLastRemind(const QDate &date) +{ + setValue(SettingDateOfLastRemind, date); +} diff --git a/src/libs/vmisc/vcommonsettings.h b/src/libs/vmisc/vcommonsettings.h index 42d954348..0755b11a1 100644 --- a/src/libs/vmisc/vcommonsettings.h +++ b/src/libs/vmisc/vcommonsettings.h @@ -105,6 +105,9 @@ public: int GetLatestSkippedVersion() const; void SetLatestSkippedVersion(int value); + QDate GetDateOfLastRemind() const; + void SetDateOfLastRemind(const QDate &date); + private: Q_DISABLE_COPY(VCommonSettings) @@ -132,6 +135,7 @@ private: static const QString SettingGeneralToolbarsState; static const QString SettingPreferenceDialogSize; static const QString SettingLatestSkippedVersion; + static const QString SettingDateOfLastRemind; }; #endif // VCOMMONSETTINGS_H From faae90363ebf260074f7ea409f5cd1aef13981ad Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 13:14:48 +0300 Subject: [PATCH 21/69] Show button "Check For Updates" in dialogs about Valentina and Tape. Move settings to common file. --HG-- branch : feature --- src/app/tape/dialogs/dialogabouttape.cpp | 20 +++++----- src/app/tape/dialogs/dialogabouttape.h | 10 ++--- src/app/tape/dialogs/dialogabouttape.ui | 41 +++++++++++++------- src/app/tape/main.cpp | 4 ++ src/app/tape/tape.pro | 9 +++++ src/app/valentina/dialogs/dialogaboutapp.cpp | 25 ++++++------ src/app/valentina/dialogs/dialogaboutapp.h | 7 +--- src/app/valentina/dialogs/dialogaboutapp.ui | 39 ++++++++++++------- src/app/valentina/main.cpp | 11 ++++-- src/libs/fervor/fvupdater.cpp | 4 +- src/libs/fervor/fvupdater.h | 2 + src/libs/vmisc/vcommonsettings.cpp | 14 +++++-- 12 files changed, 113 insertions(+), 73 deletions(-) diff --git a/src/app/tape/dialogs/dialogabouttape.cpp b/src/app/tape/dialogs/dialogabouttape.cpp index 841d0c9f1..5c282bd9b 100644 --- a/src/app/tape/dialogs/dialogabouttape.cpp +++ b/src/app/tape/dialogs/dialogabouttape.cpp @@ -30,6 +30,7 @@ #include "ui_dialogabouttape.h" #include "../version.h" #include "../vmisc/def.h" +#include "../fervor/fvupdater.h" #include #include @@ -49,8 +50,16 @@ DialogAboutTape::DialogAboutTape(QWidget *parent) //mApp->Settings()->GetOsSeparator() ? setLocale(QLocale::system()) : setLocale(QLocale(QLocale::C)); RetranslateUi(); - connect(ui->pushButton_Web_Site, &QPushButton::clicked, this, &DialogAboutTape::WebButtonClicked); + connect(ui->pushButton_Web_Site, &QPushButton::clicked, [this](){ + if ( QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR)) == false) + { + qWarning() << tr("Cannot open your default browser"); + } + }); connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &DialogAboutTape::close); + connect(ui->pushButtonCheckUpdate, &QPushButton::clicked, [](){ + FvUpdater::sharedUpdater()->CheckForUpdatesNotSilent(); + }); // By default on Windows font point size 8 points we need 11 like on Linux. FontPointSize(ui->label_Legal_Stuff, 11); @@ -99,15 +108,6 @@ void DialogAboutTape::showEvent(QShowEvent *event) isInitialized = true;//first show windows are held } -//--------------------------------------------------------------------------------------------------------------------- -void DialogAboutTape::WebButtonClicked() -{ - if ( QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR)) == false) - { - qWarning() << tr("Cannot open your default browser"); - } -} - //--------------------------------------------------------------------------------------------------------------------- void DialogAboutTape::FontPointSize(QWidget *w, int pointSize) { diff --git a/src/app/tape/dialogs/dialogabouttape.h b/src/app/tape/dialogs/dialogabouttape.h index 64039ed04..286f7e2af 100644 --- a/src/app/tape/dialogs/dialogabouttape.h +++ b/src/app/tape/dialogs/dialogabouttape.h @@ -31,8 +31,9 @@ #include -namespace Ui { -class DialogAboutTape; +namespace Ui +{ + class DialogAboutTape; } class DialogAboutTape : public QDialog @@ -40,16 +41,13 @@ class DialogAboutTape : public QDialog Q_OBJECT public: - explicit DialogAboutTape(QWidget *parent = 0); + explicit DialogAboutTape(QWidget *parent = nullptr); virtual ~DialogAboutTape(); protected: virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; -private slots: - void WebButtonClicked(); - private: Q_DISABLE_COPY(DialogAboutTape) Ui::DialogAboutTape *ui; diff --git a/src/app/tape/dialogs/dialogabouttape.ui b/src/app/tape/dialogs/dialogabouttape.ui index 5a00d3df0..e070f0d65 100644 --- a/src/app/tape/dialogs/dialogabouttape.ui +++ b/src/app/tape/dialogs/dialogabouttape.ui @@ -6,7 +6,7 @@ 0 0 - 559 + 376 320 @@ -248,20 +248,31 @@ - - - true - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - true - - + + + + + Check For Updates + + + + + + + true + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + false + + + + diff --git a/src/app/tape/main.cpp b/src/app/tape/main.cpp index d1ef6b158..42e1d5e4f 100644 --- a/src/app/tape/main.cpp +++ b/src/app/tape/main.cpp @@ -28,6 +28,7 @@ #include "tmainwindow.h" #include "mapplication.h" +#include "../fervor/fvupdater.h" #include // For QT_REQUIRE_VERSION #include @@ -51,6 +52,9 @@ int main(int argc, char *argv[]) MApplication app(argc, argv); app.InitOptions(); + // Set feed URL before doing anything else + FvUpdater::sharedUpdater()->SetFeedURL(defaultFeedURL); + QTimer::singleShot(0, &app, SLOT(ProcessCMD())); return app.exec(); diff --git a/src/app/tape/tape.pro b/src/app/tape/tape.pro index a04fbeb47..75325edc0 100644 --- a/src/app/tape/tape.pro +++ b/src/app/tape/tape.pro @@ -401,6 +401,15 @@ DEPENDPATH += $$PWD/../../libs/vpatterndb win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpatterndb/$${DESTDIR}/vpatterndb.lib else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpatterndb/$${DESTDIR}/libvpatterndb.a +# Fervor static library (depend on VMisc, IFC) +unix|win32: LIBS += -L$$OUT_PWD/../../libs/fervor/$${DESTDIR}/ -lfervor + +INCLUDEPATH += $$PWD/../../libs/fervor +DEPENDPATH += $$PWD/../../libs/fervor + +win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/fervor/$${DESTDIR}/fervor.lib +else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/fervor/$${DESTDIR}/libfervor.a + #VMisc static library unix|win32: LIBS += -L$$OUT_PWD/../../libs/vmisc/$${DESTDIR}/ -lvmisc diff --git a/src/app/valentina/dialogs/dialogaboutapp.cpp b/src/app/valentina/dialogs/dialogaboutapp.cpp index 7081726ff..3379cafb3 100644 --- a/src/app/valentina/dialogs/dialogaboutapp.cpp +++ b/src/app/valentina/dialogs/dialogaboutapp.cpp @@ -35,6 +35,7 @@ #include #include "../options.h" #include "../core/vapplication.h" +#include "../fervor/fvupdater.h" //--------------------------------------------------------------------------------------------------------------------- DialogAboutApp::DialogAboutApp(QWidget *parent) : @@ -60,7 +61,16 @@ DialogAboutApp::DialogAboutApp(QWidget *parent) : ui->pushButton_Web_Site->setText(tr("Web site : %1").arg(VER_COMPANYDOMAIN_STR)); - connect(ui->pushButton_Web_Site, &QPushButton::clicked, this, &DialogAboutApp::webButtonClicked ); + connect(ui->pushButton_Web_Site, &QPushButton::clicked, [this](){ + if ( QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR)) == false) + { + qWarning() << tr("Cannot open your default browser"); + } + }); + + connect(ui->pushButtonCheckUpdate, &QPushButton::clicked, [](){ + FvUpdater::sharedUpdater()->CheckForUpdatesNotSilent(); + }); // By default on Windows font point size 8 points we need 11 like on Linux. FontPointSize(ui->label_Legal_Stuff, 11); @@ -105,16 +115,3 @@ void DialogAboutApp::FontPointSize(QWidget *w, int pointSize) font.setPointSize(pointSize); w->setFont(font); } - -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief Fake button clicked - */ -void DialogAboutApp::webButtonClicked() -{ - if ( QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR)) == false) - { - qWarning() << tr("Cannot open your default browser"); - } - -} diff --git a/src/app/valentina/dialogs/dialogaboutapp.h b/src/app/valentina/dialogs/dialogaboutapp.h index 5e8ce6b17..e635be942 100644 --- a/src/app/valentina/dialogs/dialogaboutapp.h +++ b/src/app/valentina/dialogs/dialogaboutapp.h @@ -41,8 +41,8 @@ class DialogAboutApp : public QDialog Q_OBJECT public: - explicit DialogAboutApp(QWidget *parent = 0); - ~DialogAboutApp(); + explicit DialogAboutApp(QWidget *parent = nullptr); + virtual ~DialogAboutApp(); protected: virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; @@ -53,9 +53,6 @@ private: Q_DISABLE_COPY(DialogAboutApp) void FontPointSize(QWidget *w, int pointSize); - -private slots: - void webButtonClicked(); }; #endif // DIALOGABOUTAPP_H diff --git a/src/app/valentina/dialogs/dialogaboutapp.ui b/src/app/valentina/dialogs/dialogaboutapp.ui index 6b6ae2a24..dfa407174 100644 --- a/src/app/valentina/dialogs/dialogaboutapp.ui +++ b/src/app/valentina/dialogs/dialogaboutapp.ui @@ -294,20 +294,31 @@ Bettina Gatzlaff - - - true - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - true - - + + + + + Check For Updates + + + + + + + true + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + false + + + + diff --git a/src/app/valentina/main.cpp b/src/app/valentina/main.cpp index 48c3fa982..353e33aae 100644 --- a/src/app/valentina/main.cpp +++ b/src/app/valentina/main.cpp @@ -57,11 +57,14 @@ int main(int argc, char *argv[]) app.InitOptions(); - // Set feed URL before doing anything else - FvUpdater::sharedUpdater()->SetFeedURL("http://localhost/updateapp/Appcast.xml"); + if (VApplication::IsGUIMode()) + { + // Set feed URL before doing anything else + FvUpdater::sharedUpdater()->SetFeedURL(defaultFeedURL); - // Check for updates automatically - FvUpdater::sharedUpdater()->CheckForUpdatesSilent(); + // Check for updates automatically + FvUpdater::sharedUpdater()->CheckForUpdatesSilent(); + } MainWindow w; #if !defined(Q_OS_MAC) diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp index 9e7f3adfd..b215a5957 100644 --- a/src/libs/fervor/fvupdater.cpp +++ b/src/libs/fervor/fvupdater.cpp @@ -30,6 +30,8 @@ #include #include +const QString defaultFeedURL = QStringLiteral("http://localhost/updateapp/Appcast.xml"); + QPointer FvUpdater::m_Instance; //--------------------------------------------------------------------------------------------------------------------- @@ -177,7 +179,7 @@ void FvUpdater::UpdateInstallationConfirmed() // Open a link if (not QDesktopServices::openUrl(proposedUpdate->GetEnclosureUrl())) { - showErrorDialog(tr("Unable to open a browser."), true); + showErrorDialog(tr("Cannot open your default browser."), true); return; } diff --git a/src/libs/fervor/fvupdater.h b/src/libs/fervor/fvupdater.h index 0191ae589..f6021f25b 100644 --- a/src/libs/fervor/fvupdater.h +++ b/src/libs/fervor/fvupdater.h @@ -32,6 +32,8 @@ #include "fvupdatewindow.h" #include "fvavailableupdate.h" +extern const QString defaultFeedURL; + class FvUpdater : public QObject { Q_OBJECT diff --git a/src/libs/vmisc/vcommonsettings.cpp b/src/libs/vmisc/vcommonsettings.cpp index a21ded0e7..179754b4e 100644 --- a/src/libs/vmisc/vcommonsettings.cpp +++ b/src/libs/vmisc/vcommonsettings.cpp @@ -436,23 +436,29 @@ void VCommonSettings::SetPreferenceDialogSize(const QSize& sz) //--------------------------------------------------------------------------------------------------------------------- int VCommonSettings::GetLatestSkippedVersion() const { - return value(SettingLatestSkippedVersion, 0x0).toInt(); + QSettings settings(this->format(), this->scope(), this->organizationName(), commonIniFilename); + return settings.value(SettingLatestSkippedVersion, 0x0).toInt(); } //--------------------------------------------------------------------------------------------------------------------- void VCommonSettings::SetLatestSkippedVersion(int value) { - setValue(SettingLatestSkippedVersion, value); + QSettings settings(this->format(), this->scope(), this->organizationName(), commonIniFilename); + settings.setValue(SettingLatestSkippedVersion, value); + settings.sync(); } //--------------------------------------------------------------------------------------------------------------------- QDate VCommonSettings::GetDateOfLastRemind() const { - return value(SettingDateOfLastRemind, QDate(1900, 1, 1)).toDate(); + QSettings settings(this->format(), this->scope(), this->organizationName(), commonIniFilename); + return settings.value(SettingDateOfLastRemind, QDate(1900, 1, 1)).toDate(); } //--------------------------------------------------------------------------------------------------------------------- void VCommonSettings::SetDateOfLastRemind(const QDate &date) { - setValue(SettingDateOfLastRemind, date); + QSettings settings(this->format(), this->scope(), this->organizationName(), commonIniFilename); + settings.setValue(SettingDateOfLastRemind, date); + settings.sync(); } From 0a1e89c8394d2972b9869cf5ae44cac698e029b0 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 13:21:45 +0300 Subject: [PATCH 22/69] Updated default feed url. --HG-- branch : feature --- src/libs/fervor/fvupdater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp index b215a5957..17a6bcef7 100644 --- a/src/libs/fervor/fvupdater.cpp +++ b/src/libs/fervor/fvupdater.cpp @@ -30,7 +30,7 @@ #include #include -const QString defaultFeedURL = QStringLiteral("http://localhost/updateapp/Appcast.xml"); +const QString defaultFeedURL = QStringLiteral("http://valentinaproject.bitbucket.org/Appcast.xml"); QPointer FvUpdater::m_Instance; From 83aeb00063f1c338261b11129119c46a046c48a9 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 13:24:27 +0300 Subject: [PATCH 23/69] Added example of Appcast.xml. --HG-- branch : feature --- src/libs/fervor/data/Appcast.xml | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/libs/fervor/data/Appcast.xml diff --git a/src/libs/fervor/data/Appcast.xml b/src/libs/fervor/data/Appcast.xml new file mode 100644 index 000000000..5812aa0d8 --- /dev/null +++ b/src/libs/fervor/data/Appcast.xml @@ -0,0 +1,48 @@ + + + + + Valentina + http://valentina-project.org/ + Valentina is a cross-platform patternmaking program which allows designers +to create and model patterns of clothing. This software allows pattern +creation, using either standard sizing tables or an individual’s set of +measurements. It blends new technologies with traditional methods to create +a unique pattern making tool. + en + + + + Version 0.4.4 + https://bitbucket.org/dismine/valentina/raw/default/ChangeLog.txt + New minor release + + + + + + + + + + + + + + + From 0a58a27877890eb4127cf4d0f3fb606882410eef Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 13:28:00 +0300 Subject: [PATCH 24/69] Updated Changelog.txt. --HG-- branch : feature --- ChangeLog.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog.txt b/ChangeLog.txt index 780fa2465..e660ee814 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -34,6 +34,7 @@ - [#480] New tool: Midpoint between two points. - [#496] Selector for selecting which pieces to print. - [#520] Improve Union tool. An option to select about original pieces. +- [#262] Automatic Update notification. # Version 0.4.5 - [#435] Valentina doesn't change the cursor. From a4634b2500b49dcac308cfa04921eedd3c167925 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 13:30:19 +0300 Subject: [PATCH 25/69] Close feature branch. --HG-- branch : feature From 5ee91f4891005ad46b48baee29f97aafdec45ccf Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 13:40:26 +0300 Subject: [PATCH 26/69] Fix broken test build. --HG-- branch : develop --- src/libs/fervor/fervor.pri | 5 ++- src/libs/fervor/stable.cpp | 30 ++++++++++++++++++ src/libs/fervor/stable.h | 65 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/libs/fervor/stable.cpp create mode 100644 src/libs/fervor/stable.h diff --git a/src/libs/fervor/fervor.pri b/src/libs/fervor/fervor.pri index 2cac3bc15..b2b217475 100644 --- a/src/libs/fervor/fervor.pri +++ b/src/libs/fervor/fervor.pri @@ -6,10 +6,13 @@ SOURCES += \ $$PWD/fvupdater.cpp \ $$PWD/fvavailableupdate.cpp +win32-msvc*:SOURCES += $$PWD/stable.cpp + HEADERS += \ $$PWD/fvupdatewindow.h \ $$PWD/fvupdater.h \ - $$PWD/fvavailableupdate.h + $$PWD/fvavailableupdate.h \ + $$PWD/stable.h FORMS += \ $$PWD/fvupdatewindow.ui diff --git a/src/libs/fervor/stable.cpp b/src/libs/fervor/stable.cpp new file mode 100644 index 000000000..a42d3fd7c --- /dev/null +++ b/src/libs/fervor/stable.cpp @@ -0,0 +1,30 @@ +/************************************************************************ + ** + ** @file stable.cpp + ** @author Roman Telezhynskyi + ** @date 10 12, 2014 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2015 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +// Build the precompiled headers. +#include "stable.h" diff --git a/src/libs/fervor/stable.h b/src/libs/fervor/stable.h new file mode 100644 index 000000000..30cc6b879 --- /dev/null +++ b/src/libs/fervor/stable.h @@ -0,0 +1,65 @@ +/************************************************************************ + ** + ** @file stable.h + ** @author Roman Telezhynskyi + ** @date 10 12, 2014 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentine project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2013-2015 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#ifndef STABLE_H +#define STABLE_H + +/* I like to include this pragma too, so the build log indicates if pre-compiled headers were in use. */ +#pragma message("Compiling precompiled headers for Fervor library.\n") + +/* Add C includes here */ + +#if defined __cplusplus +/* Add C++ includes here */ + +#ifdef QT_CORE_LIB +#include +#endif + +#ifdef QT_XML_LIB +# include +#endif + +//In Windows you can't use those headers in all modes. +#if !defined(Q_OS_WIN) +# ifdef QT_PRINTSUPPORT_LIB +# include +# endif + +# ifdef QT_XMLPATTERNS_LIB +# include +# endif + +# ifdef QT_NETWORK_LIB +# include +# endif +#endif/*Q_OS_WIN*/ + +#endif/*__cplusplus*/ + +#endif // STABLE_H From 61b2aa01da07ab24d59670fdcc3d784c42e16598 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 13:47:32 +0300 Subject: [PATCH 27/69] Added fervor to global translation list. --HG-- branch : develop --- share/translations/translations.pro | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/share/translations/translations.pro b/share/translations/translations.pro index 9560676f8..4b6f1bee7 100644 --- a/share/translations/translations.pro +++ b/share/translations/translations.pro @@ -19,7 +19,8 @@ DEPENDPATH += \ ../../src/libs/vpatterndb \ ../../src/libs/vmisc \ ../../src/libs/vtools \ - ../../src/libs/vformat + ../../src/libs/vformat \ + ../../src/libs/fervor include(../../src/app/valentina/valentina.pri) include(../../src/app/tape/tape.pri) @@ -33,6 +34,7 @@ include(../../src/libs/vpatterndb/vpatterndb.pri) include(../../src/libs/vmisc/vmisc.pri) include(../../src/libs/vtools/vtools.pri) include(../../src/libs/vformat/vformat.pri) +include(../../src/libs/fervor/fervor.pri) # Add here path to new translation file with name "valentina_*_*.ts" if you want to add new language. # Same paths in variable INSTALL_TRANSLATIONS (translations.pri). From c6dbd1a764b6c3bb7712c530dba4c65a73100c15 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 14:47:41 +0300 Subject: [PATCH 28/69] Fervor require additionally xml library. --HG-- branch : develop --- src/libs/fervor/fervor.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/fervor/fervor.pro b/src/libs/fervor/fervor.pro index e6a45f916..7281ebb51 100644 --- a/src/libs/fervor/fervor.pro +++ b/src/libs/fervor/fervor.pro @@ -7,7 +7,7 @@ # File with common stuff for whole project include(../../../common.pri) -QT += network widgets +QT += network widgets xml # Name of library TARGET = fervor From bbaa7636fc4cd1b16d68990796c8ffe06a7e69b9 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Fri, 15 Jul 2016 14:48:14 +0300 Subject: [PATCH 29/69] Lupdate. --HG-- branch : develop --- share/translations/measurements_p0_fi_FI.ts | 2 +- share/translations/measurements_p10_fi_FI.ts | 2 +- share/translations/measurements_p11_fi_FI.ts | 2 +- share/translations/measurements_p12_fi_FI.ts | 2 +- share/translations/measurements_p13_fi_FI.ts | 2 +- share/translations/measurements_p14_fi_FI.ts | 2 +- share/translations/measurements_p15_fi_FI.ts | 2 +- share/translations/measurements_p16_fi_FI.ts | 2 +- share/translations/measurements_p17_fi_FI.ts | 2 +- share/translations/measurements_p18_fi_FI.ts | 2 +- share/translations/measurements_p19_fi_FI.ts | 2 +- share/translations/measurements_p1_fi_FI.ts | 2 +- share/translations/measurements_p20_fi_FI.ts | 2 +- share/translations/measurements_p21_fi_FI.ts | 2 +- share/translations/measurements_p22_fi_FI.ts | 2 +- share/translations/measurements_p23_fi_FI.ts | 2 +- share/translations/measurements_p24_fi_FI.ts | 2 +- share/translations/measurements_p25_fi_FI.ts | 2 +- share/translations/measurements_p26_fi_FI.ts | 2 +- share/translations/measurements_p27_fi_FI.ts | 2 +- share/translations/measurements_p28_fi_FI.ts | 2 +- share/translations/measurements_p29_fi_FI.ts | 2 +- share/translations/measurements_p2_fi_FI.ts | 2 +- share/translations/measurements_p30_fi_FI.ts | 2 +- share/translations/measurements_p31_fi_FI.ts | 2 +- share/translations/measurements_p32_fi_FI.ts | 2 +- share/translations/measurements_p33_fi_FI.ts | 2 +- share/translations/measurements_p34_fi_FI.ts | 2 +- share/translations/measurements_p35_fi_FI.ts | 2 +- share/translations/measurements_p36_fi_FI.ts | 2 +- share/translations/measurements_p37_fi_FI.ts | 2 +- share/translations/measurements_p38_fi_FI.ts | 2 +- share/translations/measurements_p39_fi_FI.ts | 2 +- share/translations/measurements_p3_fi_FI.ts | 2 +- share/translations/measurements_p40_fi_FI.ts | 2 +- share/translations/measurements_p41_fi_FI.ts | 2 +- share/translations/measurements_p42_fi_FI.ts | 2 +- share/translations/measurements_p43_fi_FI.ts | 2 +- share/translations/measurements_p44_fi_FI.ts | 2 +- share/translations/measurements_p45_fi_FI.ts | 2 +- share/translations/measurements_p46_fi_FI.ts | 2 +- share/translations/measurements_p47_fi_FI.ts | 2 +- share/translations/measurements_p48_fi_FI.ts | 2 +- share/translations/measurements_p49_fi_FI.ts | 2 +- share/translations/measurements_p4_fi_FI.ts | 2 +- share/translations/measurements_p50_fi_FI.ts | 2 +- share/translations/measurements_p51_fi_FI.ts | 2 +- share/translations/measurements_p52_fi_FI.ts | 2 +- share/translations/measurements_p53_fi_FI.ts | 2 +- share/translations/measurements_p54_fi_FI.ts | 2 +- share/translations/measurements_p5_fi_FI.ts | 2 +- share/translations/measurements_p6_fi_FI.ts | 2 +- share/translations/measurements_p7_fi_FI.ts | 2 +- share/translations/measurements_p8_fi_FI.ts | 2 +- share/translations/measurements_p998_fi_FI.ts | 2 +- share/translations/measurements_p9_fi_FI.ts | 2 +- share/translations/valentina.ts | 166 ++++++++++++++++- share/translations/valentina_cs_CZ.ts | 162 +++++++++++++++-- share/translations/valentina_de_DE.ts | 162 ++++++++++++++++- share/translations/valentina_en_CA.ts | 162 +++++++++++++++-- share/translations/valentina_en_IN.ts | 162 +++++++++++++++-- share/translations/valentina_en_US.ts | 162 ++++++++++++++++- share/translations/valentina_es_ES.ts | 162 +++++++++++++++-- share/translations/valentina_fi_FI.ts | 162 +++++++++++++++-- share/translations/valentina_fr_FR.ts | 162 +++++++++++++++-- share/translations/valentina_he_IL.ts | 166 +++++++++++++++-- share/translations/valentina_id_ID.ts | 166 +++++++++++++++-- share/translations/valentina_it_IT.ts | 162 +++++++++++++++-- share/translations/valentina_nl_NL.ts | 162 +++++++++++++++-- share/translations/valentina_pt_BR.ts | 170 ++++++++++++++++-- share/translations/valentina_ro_RO.ts | 162 +++++++++++++++-- share/translations/valentina_ru_RU.ts | 162 +++++++++++++++-- share/translations/valentina_uk_UA.ts | 162 +++++++++++++++-- share/translations/valentina_zh_CN.ts | 166 +++++++++++++++-- 74 files changed, 2790 insertions(+), 262 deletions(-) diff --git a/share/translations/measurements_p0_fi_FI.ts b/share/translations/measurements_p0_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p0_fi_FI.ts +++ b/share/translations/measurements_p0_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p10_fi_FI.ts b/share/translations/measurements_p10_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p10_fi_FI.ts +++ b/share/translations/measurements_p10_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p11_fi_FI.ts b/share/translations/measurements_p11_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p11_fi_FI.ts +++ b/share/translations/measurements_p11_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p12_fi_FI.ts b/share/translations/measurements_p12_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p12_fi_FI.ts +++ b/share/translations/measurements_p12_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p13_fi_FI.ts b/share/translations/measurements_p13_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p13_fi_FI.ts +++ b/share/translations/measurements_p13_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p14_fi_FI.ts b/share/translations/measurements_p14_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p14_fi_FI.ts +++ b/share/translations/measurements_p14_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p15_fi_FI.ts b/share/translations/measurements_p15_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p15_fi_FI.ts +++ b/share/translations/measurements_p15_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p16_fi_FI.ts b/share/translations/measurements_p16_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p16_fi_FI.ts +++ b/share/translations/measurements_p16_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p17_fi_FI.ts b/share/translations/measurements_p17_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p17_fi_FI.ts +++ b/share/translations/measurements_p17_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p18_fi_FI.ts b/share/translations/measurements_p18_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p18_fi_FI.ts +++ b/share/translations/measurements_p18_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p19_fi_FI.ts b/share/translations/measurements_p19_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p19_fi_FI.ts +++ b/share/translations/measurements_p19_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p1_fi_FI.ts b/share/translations/measurements_p1_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p1_fi_FI.ts +++ b/share/translations/measurements_p1_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p20_fi_FI.ts b/share/translations/measurements_p20_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p20_fi_FI.ts +++ b/share/translations/measurements_p20_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p21_fi_FI.ts b/share/translations/measurements_p21_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p21_fi_FI.ts +++ b/share/translations/measurements_p21_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p22_fi_FI.ts b/share/translations/measurements_p22_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p22_fi_FI.ts +++ b/share/translations/measurements_p22_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p23_fi_FI.ts b/share/translations/measurements_p23_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p23_fi_FI.ts +++ b/share/translations/measurements_p23_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p24_fi_FI.ts b/share/translations/measurements_p24_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p24_fi_FI.ts +++ b/share/translations/measurements_p24_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p25_fi_FI.ts b/share/translations/measurements_p25_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p25_fi_FI.ts +++ b/share/translations/measurements_p25_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p26_fi_FI.ts b/share/translations/measurements_p26_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p26_fi_FI.ts +++ b/share/translations/measurements_p26_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p27_fi_FI.ts b/share/translations/measurements_p27_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p27_fi_FI.ts +++ b/share/translations/measurements_p27_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p28_fi_FI.ts b/share/translations/measurements_p28_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p28_fi_FI.ts +++ b/share/translations/measurements_p28_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p29_fi_FI.ts b/share/translations/measurements_p29_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p29_fi_FI.ts +++ b/share/translations/measurements_p29_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p2_fi_FI.ts b/share/translations/measurements_p2_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p2_fi_FI.ts +++ b/share/translations/measurements_p2_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p30_fi_FI.ts b/share/translations/measurements_p30_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p30_fi_FI.ts +++ b/share/translations/measurements_p30_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p31_fi_FI.ts b/share/translations/measurements_p31_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p31_fi_FI.ts +++ b/share/translations/measurements_p31_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p32_fi_FI.ts b/share/translations/measurements_p32_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p32_fi_FI.ts +++ b/share/translations/measurements_p32_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p33_fi_FI.ts b/share/translations/measurements_p33_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p33_fi_FI.ts +++ b/share/translations/measurements_p33_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p34_fi_FI.ts b/share/translations/measurements_p34_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p34_fi_FI.ts +++ b/share/translations/measurements_p34_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p35_fi_FI.ts b/share/translations/measurements_p35_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p35_fi_FI.ts +++ b/share/translations/measurements_p35_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p36_fi_FI.ts b/share/translations/measurements_p36_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p36_fi_FI.ts +++ b/share/translations/measurements_p36_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p37_fi_FI.ts b/share/translations/measurements_p37_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p37_fi_FI.ts +++ b/share/translations/measurements_p37_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p38_fi_FI.ts b/share/translations/measurements_p38_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p38_fi_FI.ts +++ b/share/translations/measurements_p38_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p39_fi_FI.ts b/share/translations/measurements_p39_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p39_fi_FI.ts +++ b/share/translations/measurements_p39_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p3_fi_FI.ts b/share/translations/measurements_p3_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p3_fi_FI.ts +++ b/share/translations/measurements_p3_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p40_fi_FI.ts b/share/translations/measurements_p40_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p40_fi_FI.ts +++ b/share/translations/measurements_p40_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p41_fi_FI.ts b/share/translations/measurements_p41_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p41_fi_FI.ts +++ b/share/translations/measurements_p41_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p42_fi_FI.ts b/share/translations/measurements_p42_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p42_fi_FI.ts +++ b/share/translations/measurements_p42_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p43_fi_FI.ts b/share/translations/measurements_p43_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p43_fi_FI.ts +++ b/share/translations/measurements_p43_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p44_fi_FI.ts b/share/translations/measurements_p44_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p44_fi_FI.ts +++ b/share/translations/measurements_p44_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p45_fi_FI.ts b/share/translations/measurements_p45_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p45_fi_FI.ts +++ b/share/translations/measurements_p45_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p46_fi_FI.ts b/share/translations/measurements_p46_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p46_fi_FI.ts +++ b/share/translations/measurements_p46_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p47_fi_FI.ts b/share/translations/measurements_p47_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p47_fi_FI.ts +++ b/share/translations/measurements_p47_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p48_fi_FI.ts b/share/translations/measurements_p48_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p48_fi_FI.ts +++ b/share/translations/measurements_p48_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p49_fi_FI.ts b/share/translations/measurements_p49_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p49_fi_FI.ts +++ b/share/translations/measurements_p49_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p4_fi_FI.ts b/share/translations/measurements_p4_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p4_fi_FI.ts +++ b/share/translations/measurements_p4_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p50_fi_FI.ts b/share/translations/measurements_p50_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p50_fi_FI.ts +++ b/share/translations/measurements_p50_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p51_fi_FI.ts b/share/translations/measurements_p51_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p51_fi_FI.ts +++ b/share/translations/measurements_p51_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p52_fi_FI.ts b/share/translations/measurements_p52_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p52_fi_FI.ts +++ b/share/translations/measurements_p52_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p53_fi_FI.ts b/share/translations/measurements_p53_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p53_fi_FI.ts +++ b/share/translations/measurements_p53_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p54_fi_FI.ts b/share/translations/measurements_p54_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p54_fi_FI.ts +++ b/share/translations/measurements_p54_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p5_fi_FI.ts b/share/translations/measurements_p5_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p5_fi_FI.ts +++ b/share/translations/measurements_p5_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p6_fi_FI.ts b/share/translations/measurements_p6_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p6_fi_FI.ts +++ b/share/translations/measurements_p6_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p7_fi_FI.ts b/share/translations/measurements_p7_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p7_fi_FI.ts +++ b/share/translations/measurements_p7_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p8_fi_FI.ts b/share/translations/measurements_p8_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p8_fi_FI.ts +++ b/share/translations/measurements_p8_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p998_fi_FI.ts b/share/translations/measurements_p998_fi_FI.ts index 4a6f47b64..ac2483f08 100644 --- a/share/translations/measurements_p998_fi_FI.ts +++ b/share/translations/measurements_p998_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/measurements_p9_fi_FI.ts b/share/translations/measurements_p9_fi_FI.ts index d641416ce..89b802d3a 100644 --- a/share/translations/measurements_p9_fi_FI.ts +++ b/share/translations/measurements_p9_fi_FI.ts @@ -13,7 +13,7 @@ Height: Total Full measurement name. - + Pituus: Yhteensä diff --git a/share/translations/valentina.ts b/share/translations/valentina.ts index dd07aea6c..babda0ea8 100644 --- a/share/translations/valentina.ts +++ b/share/translations/valentina.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Built on %1 at %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Built on %1 at %2 + + Check For Updates + + DialogAlongLine @@ -2026,11 +2034,11 @@ Find: - Find: + Find: Search - Search + Search @@ -2913,6 +2921,26 @@ Apply settings anyway? untitled untitled + + Path: + Path: + + + Show in Explorer + Show in Explorer + + + <Empty> + <Empty> + + + File was not saved yet. + File was not saved yet. + + + Show in Finder + + DialogPatternXmlEdit @@ -4381,6 +4409,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Error + + + Information + Information + InternalStrings @@ -4740,11 +4830,11 @@ Apply settings anyway? Stop - Stop + Stop Stop using tool - Stop using tool + Stop using tool Repot Bug... @@ -5435,7 +5525,7 @@ Do you want to save your changes? Toolbar pointer - Toolbar pointer + Toolbar pointer Operations @@ -5447,7 +5537,7 @@ Do you want to save your changes? Groups - Groups + Groups Select one or more objects, <b>Enter</b> - finish creation @@ -5465,6 +5555,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + Group + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6586,6 +6700,10 @@ Do you want to save your changes? Invalid value Invalid value + + Show in Finder + + TapeConfigDialog @@ -6708,6 +6826,13 @@ Do you want to save your changes? Templates + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7819,6 +7944,17 @@ Do you want to save your changes? Suffix + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8906,6 +9042,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name Seg_ + + CurrentLength + Do not add space between words + + VVITConverter @@ -8929,11 +9070,22 @@ Do you want to save your changes? Error restoring backup file: %1. + + VWidgetDetails + + Form + Form + + + Unnamed + + + VWidgetGroups Form - Form + Form Rename diff --git a/share/translations/valentina_cs_CZ.ts b/share/translations/valentina_cs_CZ.ts index c842a6731..f58110c74 100644 --- a/share/translations/valentina_cs_CZ.ts +++ b/share/translations/valentina_cs_CZ.ts @@ -340,6 +340,10 @@ Built on %1 at %2 Sestaveno %3 v %2 {1 ?} + + Check For Updates + + DialogAboutTape @@ -379,6 +383,10 @@ Built on %1 at %2 Sestaveno %3 v %2 {1 ?} + + Check For Updates + + DialogAlongLine @@ -2849,6 +2857,26 @@ Apply settings anyway? untitled bez názvu + + Path: + Cesta: + + + Show in Explorer + + + + <Empty> + + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -4213,6 +4241,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Chyba + + + Information + + InternalStrings @@ -4568,11 +4658,11 @@ Apply settings anyway? Stop - Zastavit + Zastavit Stop using tool - Zastavit používání nástroje + Zastavit používání nástroje Repot Bug... @@ -5253,10 +5343,6 @@ Chcete uložit své změny? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5265,10 +5351,6 @@ Chcete uložit své změny? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5285,6 +5367,30 @@ Chcete uložit své změny? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6365,6 +6471,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6487,6 +6597,13 @@ Do you want to save your changes? + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7530,6 +7647,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8592,6 +8720,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8616,11 +8749,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_de_DE.ts b/share/translations/valentina_de_DE.ts index 0f0c696cb..f3c70f619 100644 --- a/share/translations/valentina_de_DE.ts +++ b/share/translations/valentina_de_DE.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Erstellt von %1 auf %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Erstellt am %1 um %2 + + Check For Updates + + DialogAlongLine @@ -2913,6 +2921,26 @@ Einstellungen trotzdem anwenden? untitled unbenannt + + Path: + Verzeichnis: + + + Show in Explorer + Im Dateiexplorer anzeigen + + + <Empty> + <leer> + + + File was not saved yet. + Datei konnte nicht gespeichert werden. + + + Show in Finder + + DialogPatternXmlEdit @@ -4381,6 +4409,68 @@ Einstellungen trotzdem anwenden? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><p>Sollen die Details wirklich vereinigt werden?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Fehler + + + Information + Information + InternalStrings @@ -4740,11 +4830,11 @@ Einstellungen trotzdem anwenden? Stop - Stop + Stop Stop using tool - Aktives Werkzeug beenden + Aktives Werkzeug beenden Repot Bug... @@ -5435,7 +5525,7 @@ Sollen die Änderungen gespeichert werden? Toolbar pointer - Symbolleisten-Zeiger + Symbolleisten-Zeiger Operations @@ -5447,7 +5537,7 @@ Sollen die Änderungen gespeichert werden? Groups - Gruppen + Gruppen Select one or more objects, <b>Enter</b> - finish creation @@ -5465,6 +5555,30 @@ Sollen die Änderungen gespeichert werden? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + Gruppe + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6585,6 +6699,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6707,6 +6825,13 @@ Do you want to save your changes? Vorlagen + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7817,6 +7942,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8904,6 +9040,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name Seg_ + + CurrentLength + Do not add space between words + + VVITConverter @@ -8927,11 +9068,22 @@ Do you want to save your changes? Fehler beim Wiederherstellen aus Backupdatei %1. + + VWidgetDetails + + Form + Form + + + Unnamed + + + VWidgetGroups Form - Form + Form Rename diff --git a/share/translations/valentina_en_CA.ts b/share/translations/valentina_en_CA.ts index a56c6e963..2eaa4a745 100644 --- a/share/translations/valentina_en_CA.ts +++ b/share/translations/valentina_en_CA.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Built on %1 at %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Built on %1 at %2 + + Check For Updates + + DialogAlongLine @@ -2913,6 +2921,26 @@ Apply settings anyway? untitled untitled + + Path: + Path: + + + Show in Explorer + Show in Explorer + + + <Empty> + <Empty> + + + File was not saved yet. + File was not saved yet. + + + Show in Finder + + DialogPatternXmlEdit @@ -4373,6 +4401,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Error + + + Information + Information + InternalStrings @@ -4732,11 +4822,11 @@ Apply settings anyway? Stop - Stop + Stop Stop using tool - Stop using tool + Stop using tool Repot Bug... @@ -5425,10 +5515,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5437,10 +5523,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5457,6 +5539,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6578,6 +6684,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6700,6 +6810,13 @@ Do you want to save your changes? Templates + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7811,6 +7928,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8898,6 +9026,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8922,11 +9055,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_en_IN.ts b/share/translations/valentina_en_IN.ts index bfef70a87..d8bc7931d 100644 --- a/share/translations/valentina_en_IN.ts +++ b/share/translations/valentina_en_IN.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Built on %1 at %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Built on %1 at %2 + + Check For Updates + + DialogAlongLine @@ -2913,6 +2921,26 @@ Apply settings anyway? untitled untitled + + Path: + Path: + + + Show in Explorer + Show in Explorer + + + <Empty> + <Empty> + + + File was not saved yet. + File was not saved yet. + + + Show in Finder + + DialogPatternXmlEdit @@ -4373,6 +4401,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Error + + + Information + Information + InternalStrings @@ -4732,11 +4822,11 @@ Apply settings anyway? Stop - Stop + Stop Stop using tool - Stop using tool + Stop using tool Repot Bug... @@ -5425,10 +5515,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5437,10 +5523,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5457,6 +5539,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6578,6 +6684,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6700,6 +6810,13 @@ Do you want to save your changes? Templates + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7811,6 +7928,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8898,6 +9026,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8922,11 +9055,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_en_US.ts b/share/translations/valentina_en_US.ts index 09f373767..78b554fee 100644 --- a/share/translations/valentina_en_US.ts +++ b/share/translations/valentina_en_US.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Built on %1 at %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Built on %1 at %2 + + Check For Updates + + DialogAlongLine @@ -2913,6 +2921,26 @@ Apply settings anyway? untitled untitled + + Path: + Path: + + + Show in Explorer + Show in Explorer + + + <Empty> + <Empty> + + + File was not saved yet. + File was not saved yet. + + + Show in Finder + + DialogPatternXmlEdit @@ -4381,6 +4409,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Error + + + Information + Information + InternalStrings @@ -4740,11 +4830,11 @@ Apply settings anyway? Stop - Stop + Stop Stop using tool - Stop using tool + Stop using tool Repot Bug... @@ -5435,7 +5525,7 @@ Do you want to save your changes? Toolbar pointer - Toolbar pointer + Toolbar pointer Operations @@ -5447,7 +5537,7 @@ Do you want to save your changes? Groups - Groups + Groups Select one or more objects, <b>Enter</b> - finish creation @@ -5465,6 +5555,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + Group + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6586,6 +6700,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6708,6 +6826,13 @@ Do you want to save your changes? Templates + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7819,6 +7944,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8906,6 +9042,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name Seg_ + + CurrentLength + Do not add space between words + + VVITConverter @@ -8929,11 +9070,22 @@ Do you want to save your changes? Error restoring backup file: %1. + + VWidgetDetails + + Form + Form + + + Unnamed + + + VWidgetGroups Form - Form + Form Rename diff --git a/share/translations/valentina_es_ES.ts b/share/translations/valentina_es_ES.ts index 30cb89041..bce7ba0de 100644 --- a/share/translations/valentina_es_ES.ts +++ b/share/translations/valentina_es_ES.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Construido el %1 a la %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Construido el %1 a la %2 + + Check For Updates + + DialogAlongLine @@ -2913,6 +2921,26 @@ Apply settings anyway? untitled sin título + + Path: + Ruta: + + + Show in Explorer + Mostrar en el explorador + + + <Empty> + <Vacio> + + + File was not saved yet. + Aun no se guardó el archivo + + + Show in Finder + + DialogPatternXmlEdit @@ -4381,6 +4409,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><p>¿Desea unir los detalles?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Error + + + Information + Información + InternalStrings @@ -4740,11 +4830,11 @@ Apply settings anyway? Stop - Parar + Parar Stop using tool - Parar de usar herramienta + Parar de usar herramienta Repot Bug... @@ -5433,10 +5523,6 @@ Quiere guardar los cambios? Select point of cubic bezier path - - Toolbar pointer - - Operations Operaciones @@ -5445,10 +5531,6 @@ Quiere guardar los cambios? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5465,6 +5547,30 @@ Quiere guardar los cambios? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + Grupo + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6585,6 +6691,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6707,6 +6817,13 @@ Do you want to save your changes? Plantillas + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7818,6 +7935,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8905,6 +9033,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8929,11 +9062,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_fi_FI.ts b/share/translations/valentina_fi_FI.ts index cefd5af3b..401bfa21b 100644 --- a/share/translations/valentina_fi_FI.ts +++ b/share/translations/valentina_fi_FI.ts @@ -340,6 +340,10 @@ Built on %1 at %2 Käännetty %3 klo %2 {1 ?} + + Check For Updates + + DialogAboutTape @@ -379,6 +383,10 @@ Built on %1 at %2 Käännetty %3 klo %2 {1 ?} + + Check For Updates + + DialogAlongLine @@ -2849,6 +2857,26 @@ Apply settings anyway? untitled nimetön + + Path: + Polku: + + + Show in Explorer + + + + <Empty> + + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -4213,6 +4241,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Virhe + + + Information + + InternalStrings @@ -4568,11 +4658,11 @@ Apply settings anyway? Stop - Lopeta + Lopeta Stop using tool - Lopeta työkalun käyttö + Lopeta työkalun käyttö Repot Bug... @@ -5253,10 +5343,6 @@ Haluatko tallentaa muutokset? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5265,10 +5351,6 @@ Haluatko tallentaa muutokset? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5285,6 +5367,30 @@ Haluatko tallentaa muutokset? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6365,6 +6471,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6487,6 +6597,13 @@ Do you want to save your changes? + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7530,6 +7647,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8582,6 +8710,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8606,11 +8739,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_fr_FR.ts b/share/translations/valentina_fr_FR.ts index 46cdea17e..09ed11a4f 100644 --- a/share/translations/valentina_fr_FR.ts +++ b/share/translations/valentina_fr_FR.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Compilé le %1 à %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Compilé le %1 à %2 + + Check For Updates + + DialogAlongLine @@ -2907,6 +2915,26 @@ Appliquer les réglages quand-même ? untitled sans titre + + Path: + Chemin: + + + Show in Explorer + Montrer dans l'Explorer + + + <Empty> + + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -4363,6 +4391,68 @@ Appliquer les réglages quand-même ? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Erreur + + + Information + Information + InternalStrings @@ -4719,11 +4809,11 @@ Appliquer les réglages quand-même ? Stop - stop + stop Stop using tool - Arrêter d'utiliser cet outil + Arrêter d'utiliser cet outil Repot Bug... @@ -5412,10 +5502,6 @@ Voulez-vous sauvegarder les changements ? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5424,10 +5510,6 @@ Voulez-vous sauvegarder les changements ? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5444,6 +5526,30 @@ Voulez-vous sauvegarder les changements ? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6545,6 +6651,10 @@ Voulez-vous enregistrer les changements? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6667,6 +6777,13 @@ Voulez-vous enregistrer les changements? Modèles + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7714,6 +7831,17 @@ Voulez-vous enregistrer les changements? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8782,6 +8910,11 @@ Voulez-vous enregistrer les changements? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8806,11 +8939,18 @@ Voulez-vous enregistrer les changements? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_he_IL.ts b/share/translations/valentina_he_IL.ts index 06bbb1acd..717df3066 100644 --- a/share/translations/valentina_he_IL.ts +++ b/share/translations/valentina_he_IL.ts @@ -284,6 +284,10 @@ Built on %1 at %2 + + Check For Updates + + DialogAboutTape @@ -319,6 +323,10 @@ Built on %1 at %2 + + Check For Updates + + DialogAlongLine @@ -2493,6 +2501,26 @@ Apply settings anyway? untitled + + Path: + + + + Show in Explorer + + + + <Empty> + + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -3701,6 +3729,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + + + + Information + + InternalStrings @@ -4054,14 +4144,6 @@ Apply settings anyway? Zoom fit best - - Stop - - - - Stop using tool - - Report bug @@ -4728,10 +4810,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -4740,10 +4818,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -4760,6 +4834,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -5832,6 +5930,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -5946,6 +6048,13 @@ Do you want to save your changes? + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -6959,6 +7068,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -7986,6 +8106,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8002,11 +8127,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_id_ID.ts b/share/translations/valentina_id_ID.ts index 6f9db7d78..865a794f8 100644 --- a/share/translations/valentina_id_ID.ts +++ b/share/translations/valentina_id_ID.ts @@ -336,6 +336,10 @@ Built on %1 at %2 Dibuat pada %3 at %2 {1 ?} + + Check For Updates + + DialogAboutTape @@ -375,6 +379,10 @@ Built on %1 at %2 Dibuat pada %3 at %2 {1 ?} + + Check For Updates + + DialogAlongLine @@ -2688,6 +2696,26 @@ Apply settings anyway? untitled + + Path: + + + + Show in Explorer + + + + <Empty> + + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -3942,6 +3970,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + + + + Information + + InternalStrings @@ -4295,14 +4385,6 @@ Apply settings anyway? Zoom fit best - - Stop - - - - Stop using tool - - Report bug @@ -4970,10 +5052,6 @@ Apakah anda ingin menyimpan perubahan anda? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -4982,10 +5060,6 @@ Apakah anda ingin menyimpan perubahan anda? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5002,6 +5076,30 @@ Apakah anda ingin menyimpan perubahan anda? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6074,6 +6172,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6196,6 +6298,13 @@ Do you want to save your changes? + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7210,6 +7319,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8237,6 +8357,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8253,11 +8378,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_it_IT.ts b/share/translations/valentina_it_IT.ts index a42782aa7..90dbc6956 100644 --- a/share/translations/valentina_it_IT.ts +++ b/share/translations/valentina_it_IT.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Aumentato dall' %1 al %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Aumentato dall' %1 al %2 + + Check For Updates + + DialogAlongLine @@ -2914,6 +2922,26 @@ Applicare le impostazioni comunque? untitled senza titolo + + Path: + Path: + + + Show in Explorer + Mostra in Explorer + + + <Empty> + <Empty> + + + File was not saved yet. + Il file non è stato ancora salvato + + + Show in Finder + + DialogPatternXmlEdit @@ -4374,6 +4402,68 @@ Applicare le impostazioni comunque? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><p>Vuoi veramente unire i dettagli?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Errore + + + Information + Informazione + InternalStrings @@ -4733,11 +4823,11 @@ Applicare le impostazioni comunque? Stop - Stop + Stop Stop using tool - Stop utilizzo strumento + Stop utilizzo strumento Repot Bug... @@ -5426,10 +5516,6 @@ Vuoi salvare i cambiamenti? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5438,10 +5524,6 @@ Vuoi salvare i cambiamenti? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5458,6 +5540,30 @@ Vuoi salvare i cambiamenti? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6579,6 +6685,10 @@ Vuoi salvare le tue modifiche? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6701,6 +6811,13 @@ Vuoi salvare le tue modifiche? Templates + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7790,6 +7907,17 @@ Vuoi salvare le tue modifiche? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8832,6 +8960,11 @@ Vuoi salvare le tue modifiche? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8856,11 +8989,18 @@ Vuoi salvare le tue modifiche? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_nl_NL.ts b/share/translations/valentina_nl_NL.ts index 6f8438bdb..49cf00d44 100644 --- a/share/translations/valentina_nl_NL.ts +++ b/share/translations/valentina_nl_NL.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Gebouwd op %3 op %2 {1 ?} + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Gebouwd op %3 op %2 {1 ?} + + Check For Updates + + DialogAlongLine @@ -2892,6 +2900,26 @@ Apply settings anyway? untitled Zonder titel + + Path: + Pad: + + + Show in Explorer + Toon in Explorer + + + <Empty> + <Leeg> + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -4344,6 +4372,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Error + + + Information + Informatie + InternalStrings @@ -4703,11 +4793,11 @@ Apply settings anyway? Stop - Stop + Stop Stop using tool - Stop gebruik gereedschap + Stop gebruik gereedschap Repot Bug... @@ -5395,10 +5485,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5407,10 +5493,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5427,6 +5509,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6544,6 +6650,10 @@ Wil je deze veranderingen opslaan? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6666,6 +6776,13 @@ Wil je deze veranderingen opslaan? Sjablonen + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7721,6 +7838,17 @@ Wil je deze veranderingen opslaan? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8773,6 +8901,11 @@ Wil je deze veranderingen opslaan? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8797,11 +8930,18 @@ Wil je deze veranderingen opslaan? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_pt_BR.ts b/share/translations/valentina_pt_BR.ts index e43c54a7b..13d93bdb7 100644 --- a/share/translations/valentina_pt_BR.ts +++ b/share/translations/valentina_pt_BR.ts @@ -335,6 +335,10 @@ Built on %1 at %2 Construído de %3 a %2 {1 ?} + + Check For Updates + + DialogAboutTape @@ -374,6 +378,10 @@ Built on %1 at %2 Construído de %3 a %2 {1 ?} + + Check For Updates + + DialogAlongLine @@ -2792,6 +2800,26 @@ Apply settings anyway? untitled + + Path: + + + + Show in Explorer + + + + <Empty> + + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -4060,6 +4088,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Erro + + + Information + + InternalStrings @@ -4413,14 +4503,6 @@ Apply settings anyway? Zoom fit best - - Stop - - - - Stop using tool - - Report bug @@ -5087,10 +5169,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5099,10 +5177,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5119,6 +5193,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6191,6 +6289,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6309,6 +6411,13 @@ Do you want to save your changes? + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7326,6 +7435,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8368,6 +8488,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name Segmento_ + + CurrentLength + Do not add space between words + + VVITConverter @@ -8391,11 +8516,22 @@ Do you want to save your changes? Erro, restaurando backup do documento: %1. + + VWidgetDetails + + Form + Forma + + + Unnamed + + + VWidgetGroups Form - Forma + Forma Rename diff --git a/share/translations/valentina_ro_RO.ts b/share/translations/valentina_ro_RO.ts index acd82bb51..f1e291032 100644 --- a/share/translations/valentina_ro_RO.ts +++ b/share/translations/valentina_ro_RO.ts @@ -348,6 +348,10 @@ Built on %1 at %2 Construit pe %1 la %2 + + Check For Updates + + DialogAboutTape @@ -387,6 +391,10 @@ Built on %1 at %2 Construit pe %1 la %2 + + Check For Updates + + DialogAlongLine @@ -2877,6 +2885,26 @@ Apply settings anyway? untitled + + Path: + Rută + + + Show in Explorer + + + + <Empty> + + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -4217,6 +4245,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Eroare + + + Information + + InternalStrings @@ -4572,11 +4662,11 @@ Apply settings anyway? Stop - Stop + Stop Stop using tool - Nu mai folosii instrumentul + Nu mai folosii instrumentul Repot Bug... @@ -5252,10 +5342,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5264,10 +5350,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5284,6 +5366,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6356,6 +6462,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6478,6 +6588,13 @@ Do you want to save your changes? + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7491,6 +7608,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8518,6 +8646,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8534,11 +8667,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_ru_RU.ts b/share/translations/valentina_ru_RU.ts index 6fde7adee..fa2c61ce9 100644 --- a/share/translations/valentina_ru_RU.ts +++ b/share/translations/valentina_ru_RU.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Собрано %1 в %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Собрано %1 в %2 + + Check For Updates + + DialogAlongLine @@ -2913,6 +2921,26 @@ Apply settings anyway? untitled безымянный + + Path: + Путь: + + + Show in Explorer + Показать в файловом менеджере + + + <Empty> + <Пусто> + + + File was not saved yet. + Файл еще не был сохранен. + + + Show in Finder + + DialogPatternXmlEdit @@ -4373,6 +4401,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><р>Вы действительно хотите объединить детали?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Ошибка + + + Information + Информация + InternalStrings @@ -4732,11 +4822,11 @@ Apply settings anyway? Stop - Стоп + Стоп Stop using tool - Прекратить использование инструмента + Прекратить использование инструмента Repot Bug... @@ -5425,10 +5515,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5437,10 +5523,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5457,6 +5539,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6578,6 +6684,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6700,6 +6810,13 @@ Do you want to save your changes? Шаблоны + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7811,6 +7928,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8905,6 +9033,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8929,11 +9062,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_uk_UA.ts b/share/translations/valentina_uk_UA.ts index 327016d3a..ec2574cd2 100644 --- a/share/translations/valentina_uk_UA.ts +++ b/share/translations/valentina_uk_UA.ts @@ -347,6 +347,10 @@ Built on %1 at %2 Зібрано %1 в %2 + + Check For Updates + + DialogAboutTape @@ -386,6 +390,10 @@ Built on %1 at %2 Зібрано %1 в %2 + + Check For Updates + + DialogAlongLine @@ -2915,6 +2923,26 @@ Apply settings anyway? untitled без імені + + Path: + Шлях: + + + Show in Explorer + Показати в Провіднику + + + <Empty> + <Пусто> + + + File was not saved yet. + Файл ще не було збережено. + + + Show in Finder + + DialogPatternXmlEdit @@ -4375,6 +4403,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> <html><head/><body><p>Чи ви справді хочете об'єднати деталі?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + Помилка + + + Information + Інформація + InternalStrings @@ -4734,11 +4824,11 @@ Apply settings anyway? Stop - Зупинити + Зупинити Stop using tool - Зупинити використання інструменту + Зупинити використання інструменту Repot Bug... @@ -5426,10 +5516,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -5438,10 +5524,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -5458,6 +5540,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -6579,6 +6685,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -6701,6 +6811,13 @@ Do you want to save your changes? Шаблони + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -7811,6 +7928,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -8898,6 +9026,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -8922,11 +9055,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename diff --git a/share/translations/valentina_zh_CN.ts b/share/translations/valentina_zh_CN.ts index ccfd1a61f..b80d3fde0 100644 --- a/share/translations/valentina_zh_CN.ts +++ b/share/translations/valentina_zh_CN.ts @@ -296,6 +296,10 @@ Built on %1 at %2 + + Check For Updates + + DialogAboutTape @@ -331,6 +335,10 @@ Built on %1 at %2 + + Check For Updates + + DialogAlongLine @@ -2441,6 +2449,26 @@ Apply settings anyway? untitled + + Path: + + + + Show in Explorer + + + + <Empty> + + + + File was not saved yet. + + + + Show in Finder + + DialogPatternXmlEdit @@ -3605,6 +3633,68 @@ Apply settings anyway? <html><head/><body><p>Do you really want to unite details?</p></body></html> + + Retain original pieces + + + + + FvUpdateWindow + + Software Update + + + + A new version of %1 is available! + + + + %1 %2 is now available - you have %3. Would you like to download it now? + + + + Skip This Version + + + + Remind Me Later + + + + Get Update + + + + + FvUpdater + + Cannot open your default browser. + + + + Feed download failed: %1. + + + + Feed parsing failed: %1 %2. + + + + No updates were found. + + + + Feed error: invalid "enclosure" with the download link + + + + Error + 错误 + + + Information + 信息 + InternalStrings @@ -3958,14 +4048,6 @@ Apply settings anyway? Zoom fit best - - Stop - - - - Stop using tool - - Report bug @@ -4632,10 +4714,6 @@ Do you want to save your changes? Select point of cubic bezier path - - Toolbar pointer - - Operations @@ -4644,10 +4722,6 @@ Do you want to save your changes? Create new group - - Groups - - Select one or more objects, <b>Enter</b> - finish creation @@ -4664,6 +4738,30 @@ Do you want to save your changes? Select one or more objects, <b>Enter</b> - confirm selection + + Tool pointer + + + + Midpoint between two points + + + + Group + + + + Contains all visibility groups + + + + Show which details will go in layout + + + + You can't use now the Layout mode. Please, include at least one detail in layout. + + MainWindowsNoGUI @@ -5740,6 +5838,10 @@ Do you want to save your changes? Invalid value + + Show in Finder + + TapeConfigDialog @@ -5858,6 +5960,13 @@ Do you want to save your changes? 草稿 + + ToggleDetailInLayout + + detail in layout list + + + Utils::CheckableMessageBox @@ -6871,6 +6980,17 @@ Do you want to save your changes? + + VToolUnionDetails + + union details + + + + United detail + + + VTranslateVars @@ -7898,6 +8018,11 @@ Do you want to save your changes? Segment. Left symbol _ in the name + + CurrentLength + Do not add space between words + + VVITConverter @@ -7914,11 +8039,18 @@ Do you want to save your changes? - VWidgetGroups + VWidgetDetails Form + + Unnamed + + + + + VWidgetGroups Rename From 47f12c80f80fba57451d41a076ad843a18fdcf3f Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 18 Jul 2016 18:09:15 +0300 Subject: [PATCH 30/69] Refactoring. Use lambda for small slots. Move slots declaration in appropriate place. --HG-- branch : develop --- .../configpages/tapeconfigurationpage.cpp | 83 ++- .../configpages/tapeconfigurationpage.h | 9 - .../tape/dialogs/configpages/tapepathpage.cpp | 23 +- .../tape/dialogs/configpages/tapepathpage.h | 7 +- src/app/tape/dialogs/dialogexporttocsv.cpp | 17 +- src/app/tape/dialogs/dialogexporttocsv.h | 3 - src/app/tape/dialogs/tapeconfigdialog.cpp | 20 +- src/app/tape/dialogs/tapeconfigdialog.h | 12 +- src/app/tape/mapplication.cpp | 6 - src/app/tape/mapplication.h | 3 +- src/app/tape/tmainwindow.cpp | 56 +- src/app/tape/tmainwindow.h | 20 +- .../core/vtooloptionspropertybrowser.h | 3 +- src/app/valentina/dialogs/configdialog.cpp | 20 +- src/app/valentina/dialogs/configdialog.h | 12 +- .../dialogs/configpages/pathpage.cpp | 19 +- .../valentina/dialogs/configpages/pathpage.h | 7 +- .../valentina/dialogs/dialoglayoutsettings.h | 7 +- src/app/valentina/dialogs/dialognewpattern.h | 6 +- .../dialogs/dialogpatternproperties.cpp | 102 ++-- .../dialogs/dialogpatternproperties.h | 23 +- .../valentina/dialogs/dialogsavelayout.cpp | 29 +- src/app/valentina/dialogs/dialogsavelayout.h | 8 +- src/app/valentina/mainwindow.cpp | 496 +++++++----------- src/app/valentina/mainwindow.h | 224 ++++---- src/app/valentina/mainwindowsnogui.h | 5 +- src/libs/fervor/fvupdater.cpp | 42 +- src/libs/fervor/fvupdater.h | 2 - src/libs/qmuparser/qmuparsertest.h | 2 +- src/libs/vmisc/vabstractapplication.cpp | 17 +- src/libs/vmisc/vabstractapplication.h | 3 - .../vtools/dialogs/support/dialogundo.cpp | 26 +- src/libs/vtools/dialogs/support/dialogundo.h | 10 +- 33 files changed, 530 insertions(+), 792 deletions(-) diff --git a/src/app/tape/dialogs/configpages/tapeconfigurationpage.cpp b/src/app/tape/dialogs/configpages/tapeconfigurationpage.cpp index c218ba4d4..c34398fbd 100644 --- a/src/app/tape/dialogs/configpages/tapeconfigurationpage.cpp +++ b/src/app/tape/dialogs/configpages/tapeconfigurationpage.cpp @@ -49,13 +49,10 @@ TapeConfigurationPage::TapeConfigurationPage(QWidget *parent) langCombo(nullptr), systemCombo(nullptr), labelCombo(nullptr), - unitCombo(nullptr), osOptionCheck(nullptr), langChanged(false), systemChanged(false), defGradationChanged(false), - unitChanged(false), - labelLangChanged(false), sendReportCheck(nullptr), askPointDeletionCheck(nullptr), toolBarStyleCheck(nullptr), @@ -118,49 +115,6 @@ void TapeConfigurationPage::Apply() } } -//--------------------------------------------------------------------------------------------------------------------- -void TapeConfigurationPage::LangChanged() -{ - langChanged = true; -} - -//--------------------------------------------------------------------------------------------------------------------- -void TapeConfigurationPage::SystemChanged() -{ - systemChanged = true; -#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) - QString text = qApp->TrVars()->PMSystemAuthor(systemCombo->itemData(systemCombo->currentIndex()).toString()); -#else - QString text = qApp->TrVars()->PMSystemAuthor(systemCombo->currentData().toString()); -#endif - systemAuthorValueLabel->setText(text); - systemAuthorValueLabel->setToolTip(text); -#if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) - text = qApp->TrVars()->PMSystemBook(systemCombo->itemData(systemCombo->currentIndex()).toString()); -#else - text = qApp->TrVars()->PMSystemBook(systemCombo->currentData().toString()); -#endif - systemBookValueLabel->setPlainText(text); -} - -//--------------------------------------------------------------------------------------------------------------------- -void TapeConfigurationPage::DefGradationChanged() -{ - defGradationChanged = true; -} - -//--------------------------------------------------------------------------------------------------------------------- -void TapeConfigurationPage::UnitChanged() -{ - this->unitChanged = true; -} - -//--------------------------------------------------------------------------------------------------------------------- -void TapeConfigurationPage::LabelLangChanged() -{ - labelLangChanged = true; -} - //--------------------------------------------------------------------------------------------------------------------- void TapeConfigurationPage::changeEvent(QEvent *event) { @@ -219,8 +173,10 @@ QGroupBox *TapeConfigurationPage::LangGroup() { langCombo->setCurrentIndex(index); } - connect(langCombo, static_cast(&QComboBox::currentIndexChanged), this, - &TapeConfigurationPage::LangChanged); + connect(langCombo, static_cast(&QComboBox::currentIndexChanged), [this]() + { + langChanged = true; + }); QFormLayout *langLayout = new QFormLayout; langLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); @@ -267,8 +223,23 @@ QGroupBox *TapeConfigurationPage::PMSystemGroup() pmSystemLayout->addRow(systemBookLabel, systemBookValueLabel); - connect(systemCombo, static_cast(&QComboBox::currentIndexChanged), this, - &TapeConfigurationPage::SystemChanged); + connect(systemCombo, static_cast(&QComboBox::currentIndexChanged), [this]() + { + systemChanged = true; + #if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + QString text = qApp->TrVars()->PMSystemAuthor(systemCombo->itemData(systemCombo->currentIndex()).toString()); + #else + QString text = qApp->TrVars()->PMSystemAuthor(systemCombo->currentData().toString()); + #endif + systemAuthorValueLabel->setText(text); + systemAuthorValueLabel->setToolTip(text); + #if QT_VERSION < QT_VERSION_CHECK(5, 2, 0) + text = qApp->TrVars()->PMSystemBook(systemCombo->itemData(systemCombo->currentIndex()).toString()); + #else + text = qApp->TrVars()->PMSystemBook(systemCombo->currentData().toString()); + #endif + systemBookValueLabel->setPlainText(text); + }); // set default pattern making system const VTapeSettings *settings = qApp->TapeSettings(); @@ -300,8 +271,14 @@ QGroupBox *TapeConfigurationPage::GradationGroup() { defHeightCombo->setCurrentIndex(index); } - connect(defHeightCombo, static_cast(&QComboBox::currentIndexChanged), this, - &TapeConfigurationPage::DefGradationChanged); + + auto DefGradationChanged = [this]() + { + defGradationChanged = true; + }; + + connect(defHeightCombo, static_cast(&QComboBox::currentIndexChanged), + DefGradationChanged); gradationLayout->addRow(defHeightLabel, defHeightCombo); @@ -314,7 +291,7 @@ QGroupBox *TapeConfigurationPage::GradationGroup() defSizeCombo->setCurrentIndex(index); } connect(defHeightCombo, static_cast(&QComboBox::currentIndexChanged), this, - &TapeConfigurationPage::DefGradationChanged); + DefGradationChanged); gradationLayout->addRow(defSizeLabel, defSizeCombo); gradationGroup->setLayout(gradationLayout); diff --git a/src/app/tape/dialogs/configpages/tapeconfigurationpage.h b/src/app/tape/dialogs/configpages/tapeconfigurationpage.h index b21760a67..f2aa0083c 100644 --- a/src/app/tape/dialogs/configpages/tapeconfigurationpage.h +++ b/src/app/tape/dialogs/configpages/tapeconfigurationpage.h @@ -45,12 +45,6 @@ class TapeConfigurationPage : public QWidget public: explicit TapeConfigurationPage(QWidget *parent = nullptr); void Apply(); -public slots: - void LangChanged(); - void SystemChanged(); - void DefGradationChanged(); - void UnitChanged(); - void LabelLangChanged(); protected: virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; private: @@ -58,13 +52,10 @@ private: QComboBox *langCombo; QComboBox *systemCombo; QComboBox *labelCombo; - QComboBox *unitCombo; QCheckBox *osOptionCheck; bool langChanged; bool systemChanged; bool defGradationChanged; - bool unitChanged; - bool labelLangChanged; QCheckBox *sendReportCheck; QCheckBox *askPointDeletionCheck; QCheckBox *toolBarStyleCheck; diff --git a/src/app/tape/dialogs/configpages/tapepathpage.cpp b/src/app/tape/dialogs/configpages/tapepathpage.cpp index 389f81451..0aff9cf42 100644 --- a/src/app/tape/dialogs/configpages/tapepathpage.cpp +++ b/src/app/tape/dialogs/configpages/tapepathpage.cpp @@ -71,16 +71,6 @@ void TapePathPage::Apply() settings->SetPathTemplate(pathTable->item(2, 1)->text()); } -//--------------------------------------------------------------------------------------------------------------------- -void TapePathPage::TableActivated() -{ - defaultButton->setEnabled(true); - defaultButton->setDefault(false); - - editButton->setEnabled(true); - editButton->setDefault(true); -} - //--------------------------------------------------------------------------------------------------------------------- void TapePathPage::DefaultPath() { @@ -129,8 +119,8 @@ void TapePathPage::EditPath() default: break; } - QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), path, - QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + const QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), path, + QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); if (dir.isEmpty()) { DefaultPath(); @@ -223,7 +213,14 @@ void TapePathPage::InitTable() pathTable->resizeRowsToContents(); pathTable->horizontalHeader()->setStretchLastSection(true); - connect(pathTable, &QTableWidget::itemSelectionChanged, this, &TapePathPage::TableActivated); + connect(pathTable, &QTableWidget::itemSelectionChanged, [this] + { + defaultButton->setEnabled(true); + defaultButton->setDefault(false); + + editButton->setEnabled(true); + editButton->setDefault(true); + }); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/tape/dialogs/configpages/tapepathpage.h b/src/app/tape/dialogs/configpages/tapepathpage.h index d6a2b75fe..89771d2a2 100644 --- a/src/app/tape/dialogs/configpages/tapepathpage.h +++ b/src/app/tape/dialogs/configpages/tapepathpage.h @@ -42,12 +42,11 @@ class TapePathPage : public QWidget public: explicit TapePathPage(QWidget *parent = nullptr); void Apply(); -public slots: - void TableActivated(); - void DefaultPath(); - void EditPath(); protected: virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; +private slots: + void DefaultPath(); + void EditPath(); private: Q_DISABLE_COPY(TapePathPage) QPushButton *defaultButton; diff --git a/src/app/tape/dialogs/dialogexporttocsv.cpp b/src/app/tape/dialogs/dialogexporttocsv.cpp index eb11edb7c..b00b67bf1 100644 --- a/src/app/tape/dialogs/dialogexporttocsv.cpp +++ b/src/app/tape/dialogs/dialogexporttocsv.cpp @@ -57,7 +57,13 @@ DialogExportToCSV::DialogExportToCSV(QWidget *parent) QPushButton *bDefaults = ui->buttonBox->button(QDialogButtonBox::RestoreDefaults); SCASSERT(bDefaults != nullptr); - connect(bDefaults, &QPushButton::clicked, this, &DialogExportToCSV::RestoreDefaults); + connect(bDefaults, &QPushButton::clicked, [this]() + { + ui->checkBoxWithHeader->setChecked(qApp->TapeSettings()->GetDefCSVWithHeader()); + ui->comboBoxCodec->setCurrentIndex(ui->comboBoxCodec->findData(qApp->TapeSettings()->GetDefCSVCodec())); + + SetSeparator(qApp->TapeSettings()->GetDefCSVSeparator()); + }); } //--------------------------------------------------------------------------------------------------------------------- @@ -137,15 +143,6 @@ void DialogExportToCSV::showEvent(QShowEvent *event) isInitialized = true;//first show windows are held } -//--------------------------------------------------------------------------------------------------------------------- -void DialogExportToCSV::RestoreDefaults() -{ - ui->checkBoxWithHeader->setChecked(qApp->TapeSettings()->GetDefCSVWithHeader()); - ui->comboBoxCodec->setCurrentIndex(ui->comboBoxCodec->findData(qApp->TapeSettings()->GetDefCSVCodec())); - - SetSeparator(qApp->TapeSettings()->GetDefCSVSeparator()); -} - //--------------------------------------------------------------------------------------------------------------------- void DialogExportToCSV::SetSeparator(const QChar &separator) { diff --git a/src/app/tape/dialogs/dialogexporttocsv.h b/src/app/tape/dialogs/dialogexporttocsv.h index 3630ab57f..5c684d934 100644 --- a/src/app/tape/dialogs/dialogexporttocsv.h +++ b/src/app/tape/dialogs/dialogexporttocsv.h @@ -51,9 +51,6 @@ protected: virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; -private slots: - void RestoreDefaults(); - private: Q_DISABLE_COPY(DialogExportToCSV) Ui::DialogExportToCSV *ui; diff --git a/src/app/tape/dialogs/tapeconfigdialog.cpp b/src/app/tape/dialogs/tapeconfigdialog.cpp index cf60198e1..ca20cd121 100644 --- a/src/app/tape/dialogs/tapeconfigdialog.cpp +++ b/src/app/tape/dialogs/tapeconfigdialog.cpp @@ -70,7 +70,15 @@ TapeConfigDialog::TapeConfigDialog(QWidget *parent) okButton = new QPushButton(tr("&Ok")); createIcons(); - connect(contentsWidget, &QListWidget::currentItemChanged, this, &TapeConfigDialog::changePage); + connect(contentsWidget, &QListWidget::currentItemChanged, + [this](QListWidgetItem *current, QListWidgetItem *previous) + { + if (current == nullptr) + { + current = previous; + } + pagesWidget->setCurrentIndex(contentsWidget->row(current)); + }); contentsWidget->setCurrentRow(0); connect(cancelButton, &QPushButton::clicked, this, &TapeConfigDialog::close); @@ -100,16 +108,6 @@ TapeConfigDialog::TapeConfigDialog(QWidget *parent) qApp->TapeSettings()->GetOsSeparator() ? setLocale(QLocale::system()) : setLocale(QLocale(QLocale::C)); } -//--------------------------------------------------------------------------------------------------------------------- -void TapeConfigDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous) -{ - if (current == nullptr) - { - current = previous; - } - pagesWidget->setCurrentIndex(contentsWidget->row(current)); -} - //--------------------------------------------------------------------------------------------------------------------- void TapeConfigDialog::closeEvent(QCloseEvent *event) { diff --git a/src/app/tape/dialogs/tapeconfigdialog.h b/src/app/tape/dialogs/tapeconfigdialog.h index 54e2f6ac8..b7367f216 100644 --- a/src/app/tape/dialogs/tapeconfigdialog.h +++ b/src/app/tape/dialogs/tapeconfigdialog.h @@ -42,15 +42,13 @@ class TapeConfigDialog : public QDialog Q_OBJECT public: explicit TapeConfigDialog(QWidget *parent = nullptr); -public slots: - void changePage(QListWidgetItem *current, QListWidgetItem *previous); signals: - void UpdateProperties(); + void UpdateProperties(); protected: - virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; - virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; - virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; - virtual void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; + virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; + virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; + virtual void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(TapeConfigDialog) QListWidget *contentsWidget; diff --git a/src/app/tape/mapplication.cpp b/src/app/tape/mapplication.cpp index a01addf1b..0f35cfabe 100644 --- a/src/app/tape/mapplication.cpp +++ b/src/app/tape/mapplication.cpp @@ -760,12 +760,6 @@ void MApplication::ProcessCMD() ParseCommandLine(SocketConnection::Client, arguments()); } -//--------------------------------------------------------------------------------------------------------------------- -void MApplication::OpenFile(const QString &path) -{ - MainWindow()->LoadFile(path); -} - //--------------------------------------------------------------------------------------------------------------------- void MApplication::NewLocalSocketConnection() { diff --git a/src/app/tape/mapplication.h b/src/app/tape/mapplication.h index 17cd27d84..af2d47641 100644 --- a/src/app/tape/mapplication.h +++ b/src/app/tape/mapplication.h @@ -60,6 +60,7 @@ public: virtual bool IsAppInGUIMode() const Q_DECL_OVERRIDE; TMainWindow *MainWindow(); QList MainWindows(); + TMainWindow *NewMainWindow(); void InitOptions(); @@ -77,7 +78,6 @@ public: void ParseCommandLine(const SocketConnection &connection, const QStringList &arguments); public slots: - TMainWindow *NewMainWindow(); void ProcessCMD(); protected: @@ -85,7 +85,6 @@ protected: virtual bool event(QEvent *e) Q_DECL_OVERRIDE; private slots: - void OpenFile(const QString &path); void NewLocalSocketConnection(); private: diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index 1ab6241e6..cfae1b38e 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -750,7 +750,7 @@ void TMainWindow::AboutToShowWindowMenu() } //--------------------------------------------------------------------------------------------------------------------- -void TMainWindow::ShowWindow() +void TMainWindow::ShowWindow() const { if (QAction *action = qobject_cast(sender())) { @@ -758,27 +758,13 @@ void TMainWindow::ShowWindow() if (v.canConvert()) { const int offset = qvariant_cast(v); - QList windows = qApp->MainWindows(); + const QList windows = qApp->MainWindows(); windows.at(offset)->raise(); windows.at(offset)->activateWindow(); } } } -//--------------------------------------------------------------------------------------------------------------------- -void TMainWindow::AboutApplication() -{ - DialogAboutTape * aboutDialog = new DialogAboutTape(this); - aboutDialog->setAttribute(Qt::WA_DeleteOnClose, true); - aboutDialog->show(); -} - -//--------------------------------------------------------------------------------------------------------------------- -void TMainWindow::AboutQt() -{ - QMessageBox::aboutQt(this, tr("About Qt")); -} - //--------------------------------------------------------------------------------------------------------------------- #if defined(Q_OS_MAC) void TMainWindow::AboutToShowDockMenu() @@ -1720,20 +1706,6 @@ void TMainWindow::SaveMFullName() } } -//--------------------------------------------------------------------------------------------------------------------- -void TMainWindow::NewWindow() -{ - qApp->NewMainWindow(); - qApp->MainWindow()->activateWindow(); -} - -//--------------------------------------------------------------------------------------------------------------------- -void TMainWindow::Preferences() -{ - TapeConfigDialog dlg(this); - dlg.exec(); -} - //--------------------------------------------------------------------------------------------------------------------- void TMainWindow::PatternUnitChanged(int index) { @@ -1762,7 +1734,11 @@ void TMainWindow::SetupMenu() connect(ui->actionExportToCSV, &QAction::triggered, this, &TMainWindow::ExportToCSV); connect(ui->actionReadOnly, &QAction::triggered, this, &TMainWindow::ReadOnly); - connect(ui->actionPreferences, &QAction::triggered, this, &TMainWindow::Preferences); + connect(ui->actionPreferences, &QAction::triggered, [this]() + { + TapeConfigDialog dlg(this); + dlg.exec(); + }); for (int i = 0; i < MaxRecentFiles; ++i) { @@ -1798,8 +1774,13 @@ void TMainWindow::SetupMenu() AboutToShowWindowMenu(); // Help - connect(ui->actionAboutQt, &QAction::triggered, this, &TMainWindow::AboutQt); - connect(ui->actionAboutTape, &QAction::triggered, this, &TMainWindow::AboutApplication); + connect(ui->actionAboutQt, &QAction::triggered, [this](){QMessageBox::aboutQt(this, tr("About Qt"));}); + connect(ui->actionAboutTape, &QAction::triggered, [this]() + { + DialogAboutTape *aboutDialog = new DialogAboutTape(this); + aboutDialog->setAttribute(Qt::WA_DeleteOnClose, true); + aboutDialog->show(); + }); //Actions for recent files loaded by a tape window application. UpdateRecentFileActions(); @@ -2765,11 +2746,16 @@ void TMainWindow::CreateWindowMenu(QMenu *menu) { SCASSERT(menu != nullptr); - QAction *action = menu->addAction(tr("&New Window"), this, SLOT(NewWindow())); + QAction *action = menu->addAction(tr("&New Window")); + connect(action, &QAction::triggered, [this]() + { + qApp->NewMainWindow(); + qApp->MainWindow()->activateWindow(); + }); action->setMenuRole(QAction::NoRole); menu->addSeparator(); - QList windows = qApp->MainWindows(); + const QList windows = qApp->MainWindows(); for (int i = 0; i < windows.count(); ++i) { TMainWindow *window = windows.at(i); diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index 93fd342e5..c7dff2a39 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -62,14 +62,7 @@ public: void SetBaseMSize(int size); void SetPUnit(Unit unit); -public slots: bool LoadFile(const QString &path); - void FileNew(); - void OpenIndividual(); - void OpenStandard(); - void OpenTemplate(); - void CreateFromExisting(); - void OpenRecentFile(); protected: virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; @@ -77,13 +70,18 @@ protected: virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; private slots: + void FileNew(); + void OpenIndividual(); + void OpenStandard(); + void OpenTemplate(); + void CreateFromExisting(); + void OpenRecentFile(); + void FileSave(); void FileSaveAs(); void ExportToCSV(); void AboutToShowWindowMenu(); - void ShowWindow(); - void AboutApplication(); - void AboutQt(); + void ShowWindow() const; #if defined(Q_OS_MAC) void AboutToShowDockMenu(); @@ -125,8 +123,6 @@ private slots: void SaveMDescription(); void SaveMFullName(); - void NewWindow(); - void Preferences(); void PatternUnitChanged(int index); private: diff --git a/src/app/valentina/core/vtooloptionspropertybrowser.h b/src/app/valentina/core/vtooloptionspropertybrowser.h index e8ba646e1..2c69b5513 100644 --- a/src/app/valentina/core/vtooloptionspropertybrowser.h +++ b/src/app/valentina/core/vtooloptionspropertybrowser.h @@ -49,9 +49,10 @@ public: void ClearPropertyBrowser(); public slots: void itemClicked(QGraphicsItem *item); - void userChangedData(VPE::VProperty* property); void UpdateOptions(); void RefreshOptions(); +private slots: + void userChangedData(VPE::VProperty* property); private: Q_DISABLE_COPY(VToolOptionsPropertyBrowser) diff --git a/src/app/valentina/dialogs/configdialog.cpp b/src/app/valentina/dialogs/configdialog.cpp index 5ae67a90a..339107245 100644 --- a/src/app/valentina/dialogs/configdialog.cpp +++ b/src/app/valentina/dialogs/configdialog.cpp @@ -97,16 +97,6 @@ ConfigDialog::ConfigDialog(QWidget *parent) : qApp->Settings()->GetOsSeparator() ? setLocale(QLocale::system()) : setLocale(QLocale(QLocale::C)); } -//--------------------------------------------------------------------------------------------------------------------- -void ConfigDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous) -{ - if (current == nullptr) - { - current = previous; - } - pagesWidget->setCurrentIndex(contentsWidget->row(current)); -} - //--------------------------------------------------------------------------------------------------------------------- void ConfigDialog::closeEvent(QCloseEvent *event) { @@ -177,7 +167,15 @@ void ConfigDialog::createIcons() createIcon("://icon/community_config.png", tr("Community")); createIcon("://icon/path_config.png", tr("Paths")); - connect(contentsWidget, &QListWidget::currentItemChanged, this, &ConfigDialog::changePage); + connect(contentsWidget, &QListWidget::currentItemChanged, + [this](QListWidgetItem *current, QListWidgetItem *previous) + { + if (current == nullptr) + { + current = previous; + } + pagesWidget->setCurrentIndex(contentsWidget->row(current)); + }); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/valentina/dialogs/configdialog.h b/src/app/valentina/dialogs/configdialog.h index f64321588..7f289a5e8 100644 --- a/src/app/valentina/dialogs/configdialog.h +++ b/src/app/valentina/dialogs/configdialog.h @@ -41,15 +41,13 @@ class ConfigDialog : public QDialog Q_OBJECT public: explicit ConfigDialog(QWidget *parent = nullptr); -public slots: - void changePage(QListWidgetItem *current, QListWidgetItem *previous); signals: - void UpdateProperties(); + void UpdateProperties(); protected: - virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; - virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; - virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; - virtual void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; + virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; + virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; + virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; + virtual void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(ConfigDialog) QListWidget *contentsWidget; diff --git a/src/app/valentina/dialogs/configpages/pathpage.cpp b/src/app/valentina/dialogs/configpages/pathpage.cpp index d72a5c316..97128b929 100644 --- a/src/app/valentina/dialogs/configpages/pathpage.cpp +++ b/src/app/valentina/dialogs/configpages/pathpage.cpp @@ -70,16 +70,6 @@ void PathPage::Apply() settings->SetPathTemplate(pathTable->item(4, 1)->text()); } -//--------------------------------------------------------------------------------------------------------------------- -void PathPage::TableActivated() -{ - defaultButton->setEnabled(true); - defaultButton->setDefault(false); - - editButton->setEnabled(true); - editButton->setDefault(true); -} - //--------------------------------------------------------------------------------------------------------------------- void PathPage::DefaultPath() { @@ -243,7 +233,14 @@ void PathPage::InitTable() pathTable->resizeRowsToContents(); pathTable->horizontalHeader()->setStretchLastSection(true); - connect(pathTable, &QTableWidget::itemSelectionChanged, this, &PathPage::TableActivated); + connect(pathTable, &QTableWidget::itemSelectionChanged, [this]() + { + defaultButton->setEnabled(true); + defaultButton->setDefault(false); + + editButton->setEnabled(true); + editButton->setDefault(true); + }); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/app/valentina/dialogs/configpages/pathpage.h b/src/app/valentina/dialogs/configpages/pathpage.h index 9145a82aa..9bcedd9e5 100644 --- a/src/app/valentina/dialogs/configpages/pathpage.h +++ b/src/app/valentina/dialogs/configpages/pathpage.h @@ -42,12 +42,11 @@ class PathPage : public QWidget public: explicit PathPage(QWidget *parent = nullptr); void Apply(); -public slots: - void TableActivated(); - void DefaultPath(); - void EditPath(); protected: virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; +private slots: + void DefaultPath(); + void EditPath(); private: Q_DISABLE_COPY(PathPage) QPushButton *defaultButton; diff --git a/src/app/valentina/dialogs/dialoglayoutsettings.h b/src/app/valentina/dialogs/dialoglayoutsettings.h index a3684a00b..c5d2ca605 100644 --- a/src/app/valentina/dialogs/dialoglayoutsettings.h +++ b/src/app/valentina/dialogs/dialoglayoutsettings.h @@ -122,17 +122,16 @@ public: protected: virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; public slots: + void DialogAccepted(); +private slots: void ConvertPaperSize(); void ConvertLayoutSize(); - void TemplateSelected(); void FindTemplate(); void PaperSizeChanged(); void Swap(bool checked); - - void DialogAccepted(); void RestoreDefaults(); -private slots: + void CorrectMaxFileds(); void IgnoreAllFields(int state); private: diff --git a/src/app/valentina/dialogs/dialognewpattern.h b/src/app/valentina/dialogs/dialognewpattern.h index aeb171b74..aeb81563f 100644 --- a/src/app/valentina/dialogs/dialognewpattern.h +++ b/src/app/valentina/dialogs/dialognewpattern.h @@ -45,13 +45,13 @@ class DialogNewPattern : public QDialog Q_OBJECT public: DialogNewPattern(VContainer *data, const QString &patternPieceName, QWidget *parent = nullptr); - ~DialogNewPattern(); + virtual ~DialogNewPattern(); QString name() const; Unit PatternUnit() const; -public slots: - void CheckState(); protected: virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; +private slots: + void CheckState(); private: Q_DISABLE_COPY(DialogNewPattern) Ui::DialogNewPattern *ui; diff --git a/src/app/valentina/dialogs/dialogpatternproperties.cpp b/src/app/valentina/dialogs/dialogpatternproperties.cpp index ed57b6819..373158a44 100644 --- a/src/app/valentina/dialogs/dialogpatternproperties.cpp +++ b/src/app/valentina/dialogs/dialogpatternproperties.cpp @@ -133,22 +133,27 @@ DialogPatternProperties::DialogPatternProperties(const QString &filePath, VPatte const QString size = QString().setNum(doc->GetDefCustomSize()); SetDefaultSize(size); - connect(ui->radioButtonDefFromP, &QRadioButton::toggled, this, &DialogPatternProperties::ToggleComboBox); - connect(ui->radioButtonDefFromP, &QRadioButton::toggled, this, &DialogPatternProperties::DefValueChanged); + connect(ui->radioButtonDefFromP, &QRadioButton::toggled, [this]() + { + ui->comboBoxHeight->setEnabled(ui->radioButtonDefFromP->isChecked()); + ui->comboBoxSize->setEnabled(ui->radioButtonDefFromP->isChecked()); + }); + + auto DefValueChanged = [this](){defaultChanged = true;}; + + connect(ui->radioButtonDefFromP, &QRadioButton::toggled, DefValueChanged); ui->radioButtonDefFromP->setChecked(doc->IsDefCustom()); - connect(ui->comboBoxHeight, static_cast(&QComboBox::currentIndexChanged), this, - &DialogPatternProperties::DefValueChanged); - connect(ui->comboBoxSize, static_cast(&QComboBox::currentIndexChanged), this, - &DialogPatternProperties::DefValueChanged); + connect(ui->comboBoxHeight, static_cast(&QComboBox::currentIndexChanged), + DefValueChanged); + connect(ui->comboBoxSize, static_cast(&QComboBox::currentIndexChanged), DefValueChanged); const bool readOnly = doc->IsReadOnly(); ui->checkBoxPatternReadOnly->setChecked(readOnly); if (not readOnly) { - connect(ui->checkBoxPatternReadOnly, &QRadioButton::toggled, this, - &DialogPatternProperties::SecurityValueChanged); + connect(ui->checkBoxPatternReadOnly, &QRadioButton::toggled, [this](){securityChanged = true;}); } else { @@ -359,25 +364,6 @@ void DialogPatternProperties::DescEdited() descriptionChanged = true; } -//--------------------------------------------------------------------------------------------------------------------- -void DialogPatternProperties::ToggleComboBox() -{ - ui->comboBoxHeight->setEnabled(ui->radioButtonDefFromP->isChecked()); - ui->comboBoxSize->setEnabled(ui->radioButtonDefFromP->isChecked()); -} - -//--------------------------------------------------------------------------------------------------------------------- -void DialogPatternProperties::DefValueChanged() -{ - defaultChanged = true; -} - -//--------------------------------------------------------------------------------------------------------------------- -void DialogPatternProperties::SecurityValueChanged() -{ - securityChanged = true; -} - //--------------------------------------------------------------------------------------------------------------------- void DialogPatternProperties::SetHeightsChecked(bool enabled) { @@ -642,17 +628,41 @@ void DialogPatternProperties::InitImage() { ui->imageLabel->setContextMenuPolicy(Qt::CustomContextMenu); ui->imageLabel->setScaledContents(true); - connect(ui->imageLabel, &QWidget::customContextMenuRequested, this, &DialogPatternProperties::ShowContextMenu); + connect(ui->imageLabel, &QWidget::customContextMenuRequested, [this]() + { + QMenu menu(this); + menu.addAction(deleteAction); + menu.addAction(changeImageAction); + menu.addAction(saveImageAction); + menu.addAction(showImageAction); + menu.exec(QCursor::pos()); + menu.show(); + }); deleteAction = new QAction(tr("Delete image"), this); changeImageAction = new QAction(tr("Change image"), this); saveImageAction = new QAction(tr("Save image to file"), this); showImageAction = new QAction(tr("Show image"), this); - connect(deleteAction, &QAction::triggered, this, &DialogPatternProperties::DeleteImage); + connect(deleteAction, &QAction::triggered, [this]() + { + doc->DeleteImage(); + ui->imageLabel->setText(tr("Change image")); + deleteAction->setEnabled(false); + saveImageAction->setEnabled(false); + showImageAction->setEnabled(false); + }); + connect(changeImageAction, &QAction::triggered, this, &DialogPatternProperties::ChangeImage); connect(saveImageAction, &QAction::triggered, this, &DialogPatternProperties::SaveImage); - connect(showImageAction, &QAction::triggered, this, &DialogPatternProperties::ShowImage); + connect(showImageAction, &QAction::triggered, [this]() + { + QLabel *label = new QLabel(this, Qt::Window); + const QImage image = GetImage(); + label->setPixmap(QPixmap::fromImage(image)); + label->setGeometry(QRect(QCursor::pos(), image.size())); + label->show(); + }); const QImage image = GetImage(); if (not image.isNull()) @@ -708,16 +718,6 @@ void DialogPatternProperties::ChangeImage() } } -//--------------------------------------------------------------------------------------------------------------------- -void DialogPatternProperties::DeleteImage() -{ - doc->DeleteImage(); - ui->imageLabel->setText(tr("Change image")); - deleteAction->setEnabled(false); - saveImageAction->setEnabled(false); - showImageAction->setEnabled(false); -} - //--------------------------------------------------------------------------------------------------------------------- void DialogPatternProperties::SaveImage() { @@ -741,25 +741,3 @@ void DialogPatternProperties::SaveImage() } } } - -//--------------------------------------------------------------------------------------------------------------------- -void DialogPatternProperties::ShowImage() -{ - QLabel *label = new QLabel(this, Qt::Window); - const QImage image = GetImage(); - label->setPixmap(QPixmap::fromImage(image)); - label->setGeometry(QRect(QCursor::pos(), image.size())); - label->show(); -} - -//--------------------------------------------------------------------------------------------------------------------- -void DialogPatternProperties::ShowContextMenu() -{ - QMenu menu(this); - menu.addAction(deleteAction); - menu.addAction(changeImageAction); - menu.addAction(saveImageAction); - menu.addAction(showImageAction); - menu.exec(QCursor::pos()); - menu.show(); -} diff --git a/src/app/valentina/dialogs/dialogpatternproperties.h b/src/app/valentina/dialogs/dialogpatternproperties.h index 9cac4d3fc..b3e2cc731 100644 --- a/src/app/valentina/dialogs/dialogpatternproperties.h +++ b/src/app/valentina/dialogs/dialogpatternproperties.h @@ -50,23 +50,16 @@ public: QWidget *parent = nullptr); virtual ~DialogPatternProperties() Q_DECL_OVERRIDE; signals: - void UpdateGradation(); -public slots: - void Apply(); - void Ok(); - void SelectAll(int state); - void CheckStateHeight(int state); - void CheckStateSize(int state); - void DescEdited(); - void ChangeImage(); - void ShowContextMenu(); + void UpdateGradation(); private slots: - void ToggleComboBox(); - void DefValueChanged(); - void SecurityValueChanged(); - void DeleteImage(); + void Apply(); + void Ok(); + void SelectAll(int state); + void CheckStateHeight(int state); + void CheckStateSize(int state); + void DescEdited(); + void ChangeImage(); void SaveImage(); - void ShowImage(); private: Q_DISABLE_COPY(DialogPatternProperties) Ui::DialogPatternProperties *ui; diff --git a/src/app/valentina/dialogs/dialogsavelayout.cpp b/src/app/valentina/dialogs/dialogsavelayout.cpp index e02c06fa1..380067988 100644 --- a/src/app/valentina/dialogs/dialogsavelayout.cpp +++ b/src/app/valentina/dialogs/dialogsavelayout.cpp @@ -90,10 +90,17 @@ DialogSaveLayout::DialogSaveLayout(int count, const QString &fileName, QWidget * ui->comboBoxFormat->addItem(v.first, QVariant(v.second)); } connect(bOk, &QPushButton::clicked, this, &DialogSaveLayout::Save); - connect(ui->lineEditFileName, &QLineEdit::textChanged, this, &DialogSaveLayout::ShowExample); - connect(ui->comboBoxFormat, static_cast(&QComboBox::currentIndexChanged), this, - &DialogSaveLayout::ShowExample); - connect(ui->pushButtonBrowse, &QPushButton::clicked, this, &DialogSaveLayout::Browse); + + auto ShowExample = [this](){ui->labelExample->setText(tr("Example:") + FileName() + "1" + Formate());}; + + connect(ui->lineEditFileName, &QLineEdit::textChanged, ShowExample); + connect(ui->comboBoxFormat, static_cast(&QComboBox::currentIndexChanged), ShowExample); + connect(ui->pushButtonBrowse, &QPushButton::clicked, [this]() + { + const QString dir = QFileDialog::getExistingDirectory(this, tr("Select folder"), QDir::homePath(), + QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + ui->lineEditPath->setText(dir); + }); connect(ui->lineEditPath, &QLineEdit::textChanged, this, &DialogSaveLayout::PathChanged); ui->lineEditPath->setText(qApp->ValentinaSettings()->GetPathLayout()); @@ -210,20 +217,6 @@ void DialogSaveLayout::Save() accept(); } -//--------------------------------------------------------------------------------------------------------------------- -void DialogSaveLayout::ShowExample() -{ - ui->labelExample->setText(tr("Example:") + FileName() + "1" + Formate()); -} - -//--------------------------------------------------------------------------------------------------------------------- -void DialogSaveLayout::Browse() -{ - const QString dir = QFileDialog::getExistingDirectory(this, tr("Select folder"), QDir::homePath(), - QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); - ui->lineEditPath->setText(dir); -} - //--------------------------------------------------------------------------------------------------------------------- void DialogSaveLayout::PathChanged(const QString &text) { diff --git a/src/app/valentina/dialogs/dialogsavelayout.h b/src/app/valentina/dialogs/dialogsavelayout.h index 2d384e4b9..9a3739bb8 100644 --- a/src/app/valentina/dialogs/dialogsavelayout.h +++ b/src/app/valentina/dialogs/dialogsavelayout.h @@ -57,13 +57,11 @@ public: void SelectFormate(const int formate); static QString MakeHelpFormatList(); void SetDestinationPath(const QString& cmdDestinationPath); -public slots: - void Save(); - void ShowExample(); - void Browse(); - void PathChanged(const QString &text); protected: virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; +private slots: + void Save(); + void PathChanged(const QString &text); private: Q_DISABLE_COPY(DialogSaveLayout) Ui::DialogSaveLAyout *ui; diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 015887aff..ee9a8afa8 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -137,7 +137,7 @@ MainWindow::MainWindow(QWidget *parent) doc = new VPattern(pattern, &mode, sceneDraw, sceneDetails); connect(doc, &VPattern::ClearMainWindow, this, &MainWindow::Clear); - connect(doc, &VPattern::patternChanged, this, &MainWindow::PatternWasModified); + connect(doc, &VPattern::patternChanged, this, &MainWindow::PatternChangesWereSaved); connect(doc, &VPattern::UndoCommand, this, &MainWindow::FullParseFile); connect(doc, &VPattern::SetEnabledGUI, this, &MainWindow::SetEnabledGUI); connect(doc, &VPattern::CheckLayout, [this](){ @@ -163,7 +163,7 @@ MainWindow::MainWindow(QWidget *parent) ToolBarTools(); - connect(qApp->getUndoStack(), &QUndoStack::cleanChanged, this, &MainWindow::PatternWasModified); + connect(qApp->getUndoStack(), &QUndoStack::cleanChanged, this, &MainWindow::PatternChangesWereSaved); InitAutoSave(); @@ -178,7 +178,27 @@ MainWindow::MainWindow(QWidget *parent) ui->dockWidgetLayoutPages->setVisible(false); connect(watcher, &QFileSystemWatcher::fileChanged, this, &MainWindow::MeasurementsChanged); - connect(qApp, &QApplication::focusChanged, this, &MainWindow::OnWindowFocusChanged); + connect(qApp, &QApplication::focusChanged, [this](QWidget *old, QWidget *now) + { + if (old == nullptr && isAncestorOf(now) == true) + {// focus IN + if (mChanges && not mChangesAsked) + { + mChangesAsked = true; + const auto answer = QMessageBox::question(this, tr("Measurements"), + tr("Measurements was changed. Do you want to sync measurements now?"), + QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes); + if (answer == QMessageBox::Yes) + { + SyncMeasurements(); + } + } + } + + // In case we will need it + // else if (isAncestorOf(old) == true && now == nullptr) + // focus OUT + }); #if defined(Q_OS_MAC) // On Mac deafault icon size is 32x32. @@ -215,28 +235,6 @@ MainWindow::MainWindow(QWidget *parent) #endif //defined(Q_OS_MAC) } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief ActionNewPP add to scene new pattern piece. - */ -void MainWindow::NewPP() -{ - qCDebug(vMainWindow, "New PP."); - QString patternPieceName = QString(tr("Pattern piece %1")).arg(comboBoxDraws->count()+1); - qCDebug(vMainWindow, "Generated PP name: %s", qUtf8Printable(patternPieceName)); - - qCDebug(vMainWindow, "PP count %d", comboBoxDraws->count()); - patternPieceName = PatternPieceName(patternPieceName); - qCDebug(vMainWindow, "PP name: %s", qUtf8Printable(patternPieceName)); - if (patternPieceName.isEmpty()) - { - qCDebug(vMainWindow, "Name empty."); - return; - } - - AddPP(patternPieceName); -} - //--------------------------------------------------------------------------------------------------------------------- void MainWindow::AddPP(const QString &PPName) { @@ -335,7 +333,7 @@ void MainWindow::InitScenes() connect(this, &MainWindow::EnableSplineHover, sceneDraw, &VMainGraphicsScene::ToggleSplineHover); connect(this, &MainWindow::EnableSplinePathHover, sceneDraw, &VMainGraphicsScene::ToggleSplinePathHover); - connect(sceneDraw, &VMainGraphicsScene::mouseMove, this, &MainWindow::mouseMove); + connect(sceneDraw, &VMainGraphicsScene::mouseMove, this, &MainWindow::MouseMove); sceneDetails = new VMainGraphicsScene(); connect(this, &MainWindow::EnableItemMove, sceneDetails, &VMainGraphicsScene::EnableItemMove); @@ -348,7 +346,7 @@ void MainWindow::InitScenes() connect(this, &MainWindow::EnableNodePointHover, sceneDetails, &VMainGraphicsScene::ToggleNodePointHover); connect(this, &MainWindow::EnableDetailHover, sceneDetails, &VMainGraphicsScene::ToggleDetailHover); - connect(sceneDetails, &VMainGraphicsScene::mouseMove, this, &MainWindow::mouseMove); + connect(sceneDetails, &VMainGraphicsScene::mouseMove, this, &MainWindow::MouseMove); ui->view->setScene(currentScene); @@ -525,22 +523,6 @@ bool MainWindow::UpdateMeasurements(const QString &path, int size, int height) return true; } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief OptionDraw help change name of pattern piece. - */ -void MainWindow::DrawOption() -{ - const QString activDraw = doc->GetNameActivPP(); - const QString nameDraw = PatternPieceName(activDraw); - if (nameDraw.isEmpty()) - { - return; - } - RenamePP *renamePP = new RenamePP(doc, nameDraw, comboBoxDraws); - qApp->getUndoStack()->push(renamePP); -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief SetToolButton set tool and show dialog. @@ -633,7 +615,7 @@ void MainWindow::SetToolButtonWithApply(bool checked, Tool t, const QString &cur connect(dialogTool.data(), &DialogTool::DialogClosed, this, closeDialogSlot); connect(dialogTool.data(), &DialogTool::DialogApplied, this, applyDialogSlot); connect(dialogTool.data(), &DialogTool::ToolTip, this, &MainWindow::ShowToolTip); - connect(ui->view, &VMainGraphicsView::MouseRelease, this, &MainWindow::ClickEndVisualization); + connect(ui->view, &VMainGraphicsView::MouseRelease, [this](){EndVisualization(true);}); ui->view->itemClicked(nullptr); } else @@ -1200,26 +1182,6 @@ void MainWindow::ToolTrueDarts(bool checked) &MainWindow::ApplyDialog); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief About show widows about. - */ -void MainWindow::About() -{ - DialogAboutApp * about_dialog = new DialogAboutApp(this); - about_dialog->setAttribute(Qt::WA_DeleteOnClose, true); - about_dialog->show(); -} - -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief AboutQt show widows aboutQt. - */ -void MainWindow::AboutQt() -{ - QMessageBox::aboutQt(this, tr("About Qt")); -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief ShowTool highlight tool.Tip show tools tooltip. @@ -1230,36 +1192,6 @@ void MainWindow::ShowToolTip(const QString &toolTip) helpLabel->setText(toolTip); } -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::OpenRecentFile() -{ - QAction *action = qobject_cast(sender()); - if (action) - { - const QString filePath = action->data().toString(); - if (filePath.isEmpty() == false) - { - LoadPattern(filePath); - } - } -} - -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::PatternProperties() -{ - DialogPatternProperties proper(curFile, doc, pattern, this); - connect(&proper, &DialogPatternProperties::UpdateGradation, this, &MainWindow::UpdateGradation); - proper.exec(); -} - -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::EditPatternCode() -{ - DialogPatternXmlEdit *Pattern = new DialogPatternXmlEdit (this, doc); - Pattern->setAttribute(Qt::WA_DeleteOnClose, true); - Pattern->show(); -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief showEvent handle after show window. @@ -1379,7 +1311,7 @@ void MainWindow::LoadIndividual() ui->actionUnloadMeasurements->setEnabled(true); doc->SetPath(RelativeMPath(curFile, mPath)); watcher->addPath(mPath); - PatternWasModified(false); + PatternChangesWereSaved(false); ui->actionShowM->setEnabled(true); helpLabel->setText(tr("Measurements loaded")); doc->LiteParseTree(Document::LiteParse); @@ -1419,7 +1351,7 @@ void MainWindow::LoadStandard() ui->actionUnloadMeasurements->setEnabled(true); doc->SetPath(RelativeMPath(curFile, mPath)); watcher->addPath(mPath); - PatternWasModified(false); + PatternChangesWereSaved(false); ui->actionShowM->setEnabled(true); helpLabel->setText(tr("Measurements loaded")); doc->LiteParseTree(Document::LiteParse); @@ -1455,7 +1387,7 @@ void MainWindow::UnloadMeasurements() { watcher->removePath(AbsoluteMPath(curFile, doc->MPath())); doc->SetPath(QString()); - PatternWasModified(false); + PatternChangesWereSaved(false); ui->actionShowM->setEnabled(false); ui->actionUnloadMeasurements->setDisabled(true); helpLabel->setText(tr("Measurements unloaded")); @@ -1469,14 +1401,6 @@ void MainWindow::UnloadMeasurements() } } -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::CreateMeasurements() -{ - const QString tape = qApp->TapeFilePath(); - const QString workingDirectory = QFileInfo(tape).absoluteDir().absolutePath(); - QProcess::startDetached(tape, QStringList(), workingDirectory); -} - //--------------------------------------------------------------------------------------------------------------------- void MainWindow::ShowMeasurements() { @@ -1572,29 +1496,6 @@ void MainWindow::SyncMeasurements() } } -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::OnWindowFocusChanged(QWidget *old, QWidget *now) -{ - if (old == nullptr && isAncestorOf(now) == true) - {// focus IN - if (mChanges && not mChangesAsked) - { - mChangesAsked = true; - const auto answer = QMessageBox::question(this, tr("Measurements"), - tr("Measurements was changed. Do you want to sync measurements now?"), - QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes); - if (answer == QMessageBox::Yes) - { - SyncMeasurements(); - } - } - } - - // In case we will need it - // else if (isAncestorOf(old) == true && now == nullptr) - // focus OUT -} - //--------------------------------------------------------------------------------------------------------------------- #if defined(Q_OS_MAC) void MainWindow::OpenAt(QAction *where) @@ -1709,9 +1610,19 @@ void MainWindow::ToolBarDraws() comboBoxDraws->setSizeAdjustPolicy(QComboBox::AdjustToContents); comboBoxDraws->setEnabled(false); connect(comboBoxDraws, static_cast(&QComboBox::currentIndexChanged), - this, &MainWindow::currentPPChanged); + [this](int index){ChangePP(index);}); - connect(ui->actionOptionDraw, &QAction::triggered, this, &MainWindow::DrawOption); + connect(ui->actionOptionDraw, &QAction::triggered, [this]() + { + const QString activDraw = doc->GetNameActivPP(); + const QString nameDraw = PatternPieceName(activDraw); + if (nameDraw.isEmpty()) + { + return; + } + RenamePP *renamePP = new RenamePP(doc, nameDraw, comboBoxDraws); + qApp->getUndoStack()->push(renamePP); + }); } void MainWindow::ToolBarTools() @@ -1800,30 +1711,19 @@ void MainWindow::InitToolButtons() connect(ui->toolButtonMidpoint, &QToolButton::clicked, this, &MainWindow::ToolMidpoint); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief currentPPChanged change active pattern piece. - * @param index index in combobox. - */ -void MainWindow::currentPPChanged(int index) -{ - ChangePP(index); -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief mouseMove save mouse position and show user. * @param scenePos position mouse. */ -void MainWindow::mouseMove(const QPointF &scenePos) +void MainWindow::MouseMove(const QPointF &scenePos) { - //: Coords in status line: "X, Y (units)" - QString string = QString(tr("%1, %2 (%3)")).arg(static_cast(qApp->fromPixel(scenePos.x()))) - .arg(static_cast(qApp->fromPixel(scenePos.y()))) - .arg(doc->UnitsToStr(qApp->patternUnit(), true)); - if (mouseCoordinate != nullptr) + if (mouseCoordinate) { - mouseCoordinate->setText(string); + //: Coords in status line: "X, Y (units)" + mouseCoordinate->setText(QString("%1, %2 (%3)").arg(static_cast(qApp->fromPixel(scenePos.x()))) + .arg(static_cast(qApp->fromPixel(scenePos.y()))) + .arg(doc->UnitsToStr(qApp->patternUnit(), true))); } } @@ -2497,36 +2397,6 @@ void MainWindow::Open() LoadPattern(filePath); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief Preferences config dialog. - */ -void MainWindow::Preferences() -{ - ConfigDialog dlg(this); - connect(&dlg, &ConfigDialog::UpdateProperties, this, &MainWindow::WindowsLocale); // Must be first - connect(&dlg, &ConfigDialog::UpdateProperties, toolOptions, &VToolOptionsPropertyBrowser::RefreshOptions); - connect(&dlg, &ConfigDialog::UpdateProperties, this, &MainWindow::ToolBarStyles); - if (dlg.exec() == QDialog::Accepted) - { - InitAutoSave(); - } -} - -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::RepotBug() -{ - qCDebug(vMainWindow, "Reporting bug"); - QDesktopServices::openUrl(QUrl("https://bitbucket.org/dismine/valentina/issues/new")); -} - -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::OnlineHelp() -{ - qCDebug(vMainWindow, "Showing online help"); - QDesktopServices::openUrl(QUrl("https://bitbucket.org/dismine/valentina/wiki/manual/Content")); -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief Clear reset to default window. @@ -2607,20 +2477,6 @@ void MainWindow::FileClosedCorrect() qCDebug(vMainWindow, "File %s closed correct.", qUtf8Printable(curFile)); } -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::ResetWindow() -{ - if (MaybeSave()) - { - FileClosedCorrect(); - } - else - { - return; - } - Clear(); -} - //--------------------------------------------------------------------------------------------------------------------- void MainWindow::FullParseFile() { @@ -2840,19 +2696,6 @@ void MainWindow::SetEnableWidgets(bool enable) ui->view->setEnabled(enable); } -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::ClickEndVisualization() -{ - EndVisualization(true); -} - -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::UpdateGradation() -{ - UpdateHeightsList(VMeasurement::ListHeights(doc->GetGradationHeights(), qApp->patternUnit())); - UpdateSizesList(VMeasurement::ListSizes(doc->GetGradationSizes(), qApp->patternUnit())); -} - //--------------------------------------------------------------------------------------------------------------------- void MainWindow::UpdateHeightsList(const QStringList &list) { @@ -2948,7 +2791,7 @@ void MainWindow::New() /** * @brief haveChange enable action save if we have unsaved change. */ -void MainWindow::PatternWasModified(bool saved) +void MainWindow::PatternChangesWereSaved(bool saved) { if (guiEnabled) { @@ -3055,78 +2898,6 @@ void MainWindow::SetDefaultSize() pattern->SetSize(gradationSizes->currentText().toInt()); } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief ActionTable show table with variables. - * @param checked true - button checked. - */ -void MainWindow::ActionTable(bool checked) -{ - if (checked) - { - dialogTable = new DialogIncrements(pattern, doc, this); - connect(dialogTable, &DialogIncrements::DialogClosed, this, &MainWindow::ClosedActionTable); - dialogTable->show(); - } - else - { - ui->actionTable->setChecked(true); - dialogTable->activateWindow(); - } -} - -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief ClosedActionTable actions after closing table with variables. - */ -void MainWindow::ClosedActionTable() -{ - ui->actionTable->setChecked(false); - delete dialogTable; - dialogTable = nullptr; -} - -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief ActionHistory show tool history. - * @param checked true - button checked. - */ -void MainWindow::ActionHistory(bool checked) -{ - if (checked) - { - dialogHistory = new DialogHistory(pattern, doc, this); - dialogHistory->setWindowFlags(Qt::Window); - connect(this, &MainWindow::RefreshHistory, dialogHistory.data(), &DialogHistory::UpdateHistory); - connect(dialogHistory.data(), &DialogHistory::DialogClosed, this, &MainWindow::ClosedActionHistory); - // Fix issue #526. Dialog Detail is not on top after selection second object on Mac. - dialogHistory->setWindowFlags(dialogHistory->windowFlags() | Qt::WindowStaysOnTopHint); - dialogHistory->show(); - } - else - { - ui->actionHistory->setChecked(true); - dialogHistory->activateWindow(); - } -} - -//--------------------------------------------------------------------------------------------------------------------- -void MainWindow::ActionCurveDetailsMode(bool checked) -{ - ui->view->itemClicked(nullptr); - sceneDraw->EnableDetailsMode(checked); -} - -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief ClosedActionHistory actions after closing history window with variables. - */ -void MainWindow::ClosedActionHistory() -{ - ui->actionHistory->setChecked(false); - delete dialogHistory; -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief SetEnableTool enable button. @@ -3253,7 +3024,7 @@ bool MainWindow::SavePattern(const QString &fileName, QString &error) setCurrentFile(fileName); helpLabel->setText(tr("File saved")); qCDebug(vMainWindow, "File %s saved.", qUtf8Printable(fileName)); - PatternWasModified(result); + PatternChangesWereSaved(result); } } else @@ -3701,28 +3472,156 @@ void MainWindow::CreateActions() connect(ui->actionDraw, &QAction::triggered, this, &MainWindow::ActionDraw); connect(ui->actionDetails, &QAction::triggered, this, &MainWindow::ActionDetails); connect(ui->actionLayout, &QAction::triggered, this, &MainWindow::ActionLayout); - connect(ui->actionHistory, &QAction::triggered, this, &MainWindow::ActionHistory); - connect(ui->actionNewDraw, &QAction::triggered, this, &MainWindow::NewPP); + + connect(ui->actionHistory, &QAction::triggered, [this](bool checked) + { + if (checked) + { + dialogHistory = new DialogHistory(pattern, doc, this); + dialogHistory->setWindowFlags(Qt::Window); + connect(this, &MainWindow::RefreshHistory, dialogHistory.data(), &DialogHistory::UpdateHistory); + connect(dialogHistory.data(), &DialogHistory::DialogClosed, [this]() + { + ui->actionHistory->setChecked(false); + delete dialogHistory; + }); + // Fix issue #526. Dialog Detail is not on top after selection second object on Mac. + dialogHistory->setWindowFlags(dialogHistory->windowFlags() | Qt::WindowStaysOnTopHint); + dialogHistory->show(); + } + else + { + ui->actionHistory->setChecked(true); + dialogHistory->activateWindow(); + } + }); + + connect(ui->actionNewDraw, &QAction::triggered, [this]() + { + qCDebug(vMainWindow, "New PP."); + QString patternPieceName = QString(tr("Pattern piece %1")).arg(comboBoxDraws->count()+1); + qCDebug(vMainWindow, "Generated PP name: %s", qUtf8Printable(patternPieceName)); + + qCDebug(vMainWindow, "PP count %d", comboBoxDraws->count()); + patternPieceName = PatternPieceName(patternPieceName); + qCDebug(vMainWindow, "PP name: %s", qUtf8Printable(patternPieceName)); + if (patternPieceName.isEmpty()) + { + qCDebug(vMainWindow, "Name empty."); + return; + } + + AddPP(patternPieceName); + }); + connect(ui->actionSaveAs, &QAction::triggered, this, &MainWindow::SaveAs); connect(ui->actionSave, &QAction::triggered, this, &MainWindow::Save); connect(ui->actionOpen, &QAction::triggered, this, &MainWindow::Open); connect(ui->actionNew, &QAction::triggered, this, &MainWindow::New); - connect(ui->actionTable, &QAction::triggered, this, &MainWindow::ActionTable); - connect(ui->actionAbout_Qt, &QAction::triggered, this, &MainWindow::AboutQt); - connect(ui->actionAbout_Valentina, &QAction::triggered, this, &MainWindow::About); + + connect(ui->actionTable, &QAction::triggered, [this](bool checked) + { + if (checked) + { + dialogTable = new DialogIncrements(pattern, doc, this); + connect(dialogTable.data(), &DialogIncrements::DialogClosed, [this]() + { + ui->actionTable->setChecked(false); + delete dialogTable; + }); + dialogTable->show(); + } + else + { + ui->actionTable->setChecked(true); + dialogTable->activateWindow(); + } + }); + + connect(ui->actionAbout_Qt, &QAction::triggered, [this]() + { + QMessageBox::aboutQt(this, tr("About Qt")); + }); + + connect(ui->actionAbout_Valentina, &QAction::triggered, [this]() + { + DialogAboutApp *aboutDialog = new DialogAboutApp(this); + aboutDialog->setAttribute(Qt::WA_DeleteOnClose, true); + aboutDialog->show(); + }); + connect(ui->actionExit, &QAction::triggered, this, &MainWindow::close); - connect(ui->actionPreferences, &QAction::triggered, this, &MainWindow::Preferences); - connect(ui->actionReportBug, &QAction::triggered, this, &MainWindow::RepotBug); - connect(ui->actionOnlineHelp, &QAction::triggered, this, &MainWindow::OnlineHelp); + + connect(ui->actionPreferences, &QAction::triggered, [this]() + { + ConfigDialog dlg(this); + connect(&dlg, &ConfigDialog::UpdateProperties, this, &MainWindow::WindowsLocale); // Must be first + connect(&dlg, &ConfigDialog::UpdateProperties, toolOptions, &VToolOptionsPropertyBrowser::RefreshOptions); + connect(&dlg, &ConfigDialog::UpdateProperties, this, &MainWindow::ToolBarStyles); + if (dlg.exec() == QDialog::Accepted) + { + InitAutoSave(); + } + }); + + connect(ui->actionReportBug, &QAction::triggered, [this]() + { + qCDebug(vMainWindow, "Reporting bug"); + QDesktopServices::openUrl(QUrl(QStringLiteral("https://bitbucket.org/dismine/valentina/issues/new"))); + }); + + connect(ui->actionOnlineHelp, &QAction::triggered, [this]() + { + qCDebug(vMainWindow, "Showing online help"); + QDesktopServices::openUrl(QUrl(QStringLiteral("https://bitbucket.org/dismine/valentina/wiki/manual/Content"))); + }); + connect(ui->actionLast_tool, &QAction::triggered, this, &MainWindow::LastUsedTool); - connect(ui->actionPattern_properties, &QAction::triggered, this, &MainWindow::PatternProperties); + + connect(ui->actionPattern_properties, &QAction::triggered, [this]() + { + DialogPatternProperties proper(curFile, doc, pattern, this); + connect(&proper, &DialogPatternProperties::UpdateGradation, [this]() + { + UpdateHeightsList(VMeasurement::ListHeights(doc->GetGradationHeights(), qApp->patternUnit())); + UpdateSizesList(VMeasurement::ListSizes(doc->GetGradationSizes(), qApp->patternUnit())); + }); + proper.exec(); + }); + ui->actionPattern_properties->setEnabled(false); - connect(ui->actionEdit_pattern_code, &QAction::triggered, this, &MainWindow::EditPatternCode); - connect(ui->actionClosePattern, &QAction::triggered, this, &MainWindow::ResetWindow); - connect(ui->actionShowCurveDetails, &QAction::triggered, this, &MainWindow::ActionCurveDetailsMode); + connect(ui->actionEdit_pattern_code, &QAction::triggered, [this]() + { + DialogPatternXmlEdit *pattern = new DialogPatternXmlEdit (this, doc); + pattern->setAttribute(Qt::WA_DeleteOnClose, true); + pattern->show(); + }); + + connect(ui->actionClosePattern, &QAction::triggered, [this]() + { + if (MaybeSave()) + { + FileClosedCorrect(); + Clear(); + } + }); + + connect(ui->actionShowCurveDetails, &QAction::triggered, [this](bool checked) + { + ui->view->itemClicked(nullptr); + sceneDraw->EnableDetailsMode(checked); + }); + connect(ui->actionLoadIndividual, &QAction::triggered, this, &MainWindow::LoadIndividual); connect(ui->actionLoadStandard, &QAction::triggered, this, &MainWindow::LoadStandard); - connect(ui->actionCreateNew, &QAction::triggered, this, &MainWindow::CreateMeasurements); + + connect(ui->actionCreateNew, &QAction::triggered, [this]() + { + const QString tape = qApp->TapeFilePath(); + const QString workingDirectory = QFileInfo(tape).absoluteDir().absolutePath(); + QProcess::startDetached(tape, QStringList(), workingDirectory); + }); + connect(ui->actionShowM, &QAction::triggered, this, &MainWindow::ShowMeasurements); connect(ui->actionExportAs, &QAction::triggered, this, &MainWindow::ExportLayoutAs); connect(ui->actionPrintPreview, &QAction::triggered, this, &MainWindow::PrintPreviewOrigin); @@ -3737,7 +3636,18 @@ void MainWindow::CreateActions() { recentFileActs[i] = new QAction(this); recentFileActs[i]->setVisible(false); - connect(recentFileActs[i], &QAction::triggered, this, &MainWindow::OpenRecentFile); + connect(recentFileActs[i], &QAction::triggered, [this]() + { + QAction *action = qobject_cast(sender()); + if (action) + { + const QString filePath = action->data().toString(); + if (not filePath.isEmpty()) + { + LoadPattern(filePath); + } + } + }); } connect(ui->actionSyncMeasurements, &QAction::triggered, this, &MainWindow::SyncMeasurements); @@ -4228,7 +4138,7 @@ QString MainWindow::CheckPathToMeasurements(const QString &patternPath, const QS } doc->SetPath(RelativeMPath(patternPath, mPath)); - PatternWasModified(false); + PatternChangesWereSaved(false); qApp->setPatternType(patternType); return mPath; } diff --git a/src/app/valentina/mainwindow.h b/src/app/valentina/mainwindow.h index 10d5d5a4c..11bf1f229 100644 --- a/src/app/valentina/mainwindow.h +++ b/src/app/valentina/mainwindow.h @@ -62,151 +62,117 @@ public: explicit MainWindow(QWidget *parent = nullptr); virtual ~MainWindow() Q_DECL_OVERRIDE; - bool LoadPattern(const QString &curFile, const QString &customMeasureFile = QString()); + bool LoadPattern(const QString &curFile, const QString &customMeasureFile = QString()); public slots: - void ProcessCMD(); + void ProcessCMD(); + void ShowToolTip(const QString &toolTip); - void mouseMove(const QPointF &scenePos); - void ArrowTool(); - - void ActionDraw(bool checked); - void ActionDetails(bool checked); - void ActionLayout(bool checked); - - void ActionTable(bool checked); - void ActionHistory(bool checked); - void ActionCurveDetailsMode(bool checked); - void DrawOption(); - - void ClosedActionTable(); - void ClosedActionHistory(); - - void New(); - bool SaveAs(); - bool Save(); - void Open(); - void NewPP(); - - void Preferences(); - void RepotBug(); - void OnlineHelp(); - void About(); - void AboutQt(); - void PatternProperties(); - void ShowToolTip(const QString &toolTip); - void OpenRecentFile(); - void Clear(); - void ResetWindow(); - - void currentPPChanged(int index); - - void PatternWasModified(bool saved); - - void ToolEndLine(bool checked); - void ToolLine(bool checked); - void ToolAlongLine(bool checked); - void ToolMidpoint(bool checked); - void ToolShoulderPoint(bool checked); - void ToolNormal(bool checked); - void ToolBisector(bool checked); - void ToolLineIntersect(bool checked); - void ToolSpline(bool checked); - void ToolCubicBezier(bool checked); - void ToolCutSpline(bool checked); - void ToolArc(bool checked); - void ToolSplinePath(bool checked); - void ToolCubicBezierPath(bool checked); - void ToolCutSplinePath(bool checked); - void ToolPointOfContact(bool checked); - void ToolDetail(bool checked); - void ToolHeight(bool checked); - void ToolTriangle(bool checked); - void ToolPointOfIntersection(bool checked); - void ToolUnionDetails(bool checked); - void ToolGroup(bool checked); - void ToolRotation(bool checked); - void ToolCutArc(bool checked); - void ToolLineIntersectAxis(bool checked); - void ToolCurveIntersectAxis(bool checked); - void ToolArcIntersectAxis(bool checked); - void ToolPointOfIntersectionArcs(bool checked); - void ToolPointOfIntersectionCircles(bool checked); - void ToolPointOfIntersectionCurves(bool checked); - void ToolPointFromCircleAndTangent(bool checked); - void ToolPointFromArcAndTangent(bool checked); - void ToolArcWithLength(bool checked); - void ToolTrueDarts(bool checked); - - void ClosedDialogDetail(int result); - void ClosedDialogUnionDetails(int result); - void ClosedDialogGroup(int result); - -//tmp - void LastUsedTool(); - - /** - * @brief Edit XML code of pattern - */ - void EditPatternCode(); - void FullParseFile(); - - void SetEnabledGUI(bool enabled); - - void ClickEndVisualization(); - void UpdateGradation(); - void GlobalChangePP(const QString &patternPiece); - void WindowsLocale(); - void ToolBarStyles(); - - void ShowPaper(int index); signals: - void RefreshHistory(); - void EnableItemMove(bool move); - void ItemsSelection(SelectionType type) const; + void RefreshHistory(); + void EnableItemMove(bool move); + void ItemsSelection(SelectionType type) const; - void EnableLabelSelection(bool enable) const; - void EnablePointSelection(bool enable) const; - void EnableLineSelection(bool enable) const; - void EnableArcSelection(bool enable) const; - void EnableSplineSelection(bool enable) const; - void EnableSplinePathSelection(bool enable) const; - void EnableNodeLabelSelection(bool enable) const; - void EnableNodePointSelection(bool enable) const; - void EnableDetailSelection(bool enable) const; + void EnableLabelSelection(bool enable) const; + void EnablePointSelection(bool enable) const; + void EnableLineSelection(bool enable) const; + void EnableArcSelection(bool enable) const; + void EnableSplineSelection(bool enable) const; + void EnableSplinePathSelection(bool enable) const; + void EnableNodeLabelSelection(bool enable) const; + void EnableNodePointSelection(bool enable) const; + void EnableDetailSelection(bool enable) const; - void EnableLabelHover(bool enable) const; - void EnablePointHover(bool enable) const; - void EnableLineHover(bool enable) const; - void EnableArcHover(bool enable) const; - void EnableSplineHover(bool enable) const; - void EnableSplinePathHover(bool enable) const; - void EnableNodeLabelHover(bool enable) const; - void EnableNodePointHover(bool enable) const; - void EnableDetailHover(bool enable) const; + void EnableLabelHover(bool enable) const; + void EnablePointHover(bool enable) const; + void EnableLineHover(bool enable) const; + void EnableArcHover(bool enable) const; + void EnableSplineHover(bool enable) const; + void EnableSplinePathHover(bool enable) const; + void EnableNodeLabelHover(bool enable) const; + void EnableNodePointHover(bool enable) const; + void EnableDetailHover(bool enable) const; protected: - virtual void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; - virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; - virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; - virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; - virtual void customEvent(QEvent * event) Q_DECL_OVERRIDE; - virtual void CleanLayout() Q_DECL_OVERRIDE; - virtual void PrepareSceneList() Q_DECL_OVERRIDE; + virtual void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; + virtual void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; + virtual void changeEvent(QEvent* event) Q_DECL_OVERRIDE; + virtual void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE; + virtual void customEvent(QEvent * event) Q_DECL_OVERRIDE; + virtual void CleanLayout() Q_DECL_OVERRIDE; + virtual void PrepareSceneList() Q_DECL_OVERRIDE; private slots: + void MouseMove(const QPointF &scenePos); + void Clear(); + void PatternChangesWereSaved(bool saved); + void LastUsedTool(); + void FullParseFile(); + void SetEnabledGUI(bool enabled); + void GlobalChangePP(const QString &patternPiece); + void WindowsLocale(); + void ToolBarStyles(); + void ShowPaper(int index); + + void ArrowTool(); + void ToolEndLine(bool checked); + void ToolLine(bool checked); + void ToolAlongLine(bool checked); + void ToolMidpoint(bool checked); + void ToolShoulderPoint(bool checked); + void ToolNormal(bool checked); + void ToolBisector(bool checked); + void ToolLineIntersect(bool checked); + void ToolSpline(bool checked); + void ToolCubicBezier(bool checked); + void ToolCutSpline(bool checked); + void ToolArc(bool checked); + void ToolSplinePath(bool checked); + void ToolCubicBezierPath(bool checked); + void ToolCutSplinePath(bool checked); + void ToolPointOfContact(bool checked); + void ToolDetail(bool checked); + void ToolHeight(bool checked); + void ToolTriangle(bool checked); + void ToolPointOfIntersection(bool checked); + void ToolUnionDetails(bool checked); + void ToolGroup(bool checked); + void ToolRotation(bool checked); + void ToolCutArc(bool checked); + void ToolLineIntersectAxis(bool checked); + void ToolCurveIntersectAxis(bool checked); + void ToolArcIntersectAxis(bool checked); + void ToolPointOfIntersectionArcs(bool checked); + void ToolPointOfIntersectionCircles(bool checked); + void ToolPointOfIntersectionCurves(bool checked); + void ToolPointFromCircleAndTangent(bool checked); + void ToolPointFromArcAndTangent(bool checked); + void ToolArcWithLength(bool checked); + void ToolTrueDarts(bool checked); + + void ActionDraw(bool checked); + void ActionDetails(bool checked); + void ActionLayout(bool checked); + + void New(); + bool SaveAs(); + bool Save(); + void Open(); + + void ClosedDialogDetail(int result); + void ClosedDialogUnionDetails(int result); + void ClosedDialogGroup(int result); + void LoadIndividual(); void LoadStandard(); void UnloadMeasurements(); - void CreateMeasurements(); void ShowMeasurements(); void MeasurementsChanged(const QString &path); void SyncMeasurements(); - void OnWindowFocusChanged(QWidget* old, QWidget* now); #if defined(Q_OS_MAC) void OpenAt(QAction *where); #endif //defined(Q_OS_MAC) void ChangedSize(const QString &text); - void ChangedHeight(const QString & text); + void ChangedHeight(const QString &text); private: Q_DISABLE_COPY(MainWindow) @@ -242,9 +208,9 @@ private: bool patternReadOnly; - DialogIncrements *dialogTable; - QPointer dialogTool; - QPointer dialogHistory; + QPointer dialogTable; + QPointer dialogTool; + QPointer dialogHistory; /** @brief comboBoxDraws comboc who show name of pattern peaces. */ QComboBox *comboBoxDraws; diff --git a/src/app/valentina/mainwindowsnogui.h b/src/app/valentina/mainwindowsnogui.h index dbff87c6c..e1c4f41e4 100644 --- a/src/app/valentina/mainwindowsnogui.h +++ b/src/app/valentina/mainwindowsnogui.h @@ -54,12 +54,10 @@ public slots: void ToolLayoutSettings(bool checked); void ExportLayoutAs(); void SaveAsTiledPDF(); - void PrintPages (QPrinter *printer); void PrintPreviewOrigin(); void PrintPreviewTiled(); void PrintOrigin(); void PrintTiled(); - void ErrorConsoleMode(const LayoutErrors &state); protected: QVector listDetails; @@ -99,6 +97,9 @@ protected: virtual void PrepareSceneList()=0; QIcon ScenePreview(int i) const; bool LayoutSettings(VLayoutGenerator& lGenerator); +private slots: + void PrintPages (QPrinter *printer); + void ErrorConsoleMode(const LayoutErrors &state); private: Q_DISABLE_COPY(MainWindowsNoGUI) diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp index 17a6bcef7..946412ab0 100644 --- a/src/libs/fervor/fvupdater.cpp +++ b/src/libs/fervor/fvupdater.cpp @@ -261,8 +261,24 @@ void FvUpdater::startDownloadFeed(const QUrl &url) m_reply = m_qnam.get(request); - connect(m_reply, &QNetworkReply::readyRead, this, &FvUpdater::httpFeedReadyRead); - connect(m_reply, &QNetworkReply::downloadProgress, this, &FvUpdater::httpFeedUpdateDataReadProgress); + connect(m_reply, &QNetworkReply::readyRead, [this]() + { + // this slot gets called every time the QNetworkReply has new data. + // We read all of its new data and write it into the file. + // That way we use less RAM than when reading it at the finished() + // signal of the QNetworkReply + m_xml.addData(m_reply->readAll()); + }); + connect(m_reply, &QNetworkReply::downloadProgress, [this](qint64 bytesRead, qint64 totalBytes) + { + Q_UNUSED(bytesRead); + Q_UNUSED(totalBytes); + + if (m_httpRequestAborted) + { + return; + } + }); connect(m_reply, &QNetworkReply::finished, this, &FvUpdater::httpFeedDownloadFinished); } @@ -276,28 +292,6 @@ void FvUpdater::cancelDownloadFeed() } } -//--------------------------------------------------------------------------------------------------------------------- -void FvUpdater::httpFeedReadyRead() -{ - // this slot gets called every time the QNetworkReply has new data. - // We read all of its new data and write it into the file. - // That way we use less RAM than when reading it at the finished() - // signal of the QNetworkReply - m_xml.addData(m_reply->readAll()); -} - -//--------------------------------------------------------------------------------------------------------------------- -void FvUpdater::httpFeedUpdateDataReadProgress(qint64 bytesRead, qint64 totalBytes) -{ - Q_UNUSED(bytesRead); - Q_UNUSED(totalBytes); - - if (m_httpRequestAborted) - { - return; - } -} - //--------------------------------------------------------------------------------------------------------------------- void FvUpdater::httpFeedDownloadFinished() { diff --git a/src/libs/fervor/fvupdater.h b/src/libs/fervor/fvupdater.h index f6021f25b..47879dc13 100644 --- a/src/libs/fervor/fvupdater.h +++ b/src/libs/fervor/fvupdater.h @@ -70,8 +70,6 @@ protected slots: void UpdateInstallationConfirmed(); private slots: - void httpFeedReadyRead(); - void httpFeedUpdateDataReadProgress(qint64 bytesRead, qint64 totalBytes); void httpFeedDownloadFinished(); private: diff --git a/src/libs/qmuparser/qmuparsertest.h b/src/libs/qmuparser/qmuparsertest.h index 220de68fe..46b0711c1 100644 --- a/src/libs/qmuparser/qmuparsertest.h +++ b/src/libs/qmuparser/qmuparsertest.h @@ -52,7 +52,7 @@ public: QmuParserTester(QObject *parent = nullptr); -public slots: +private slots: void Run(); private: diff --git a/src/libs/vmisc/vabstractapplication.cpp b/src/libs/vmisc/vabstractapplication.cpp index 4fdc30c88..14f52abb0 100644 --- a/src/libs/vmisc/vabstractapplication.cpp +++ b/src/libs/vmisc/vabstractapplication.cpp @@ -72,7 +72,13 @@ VAbstractApplication::VAbstractApplication(int &argc, char **argv) // Enable support for HiDPI bitmap resources setAttribute(Qt::AA_UseHighDpiPixmaps); - connect(this, &QApplication::aboutToQuit, this, &VAbstractApplication::SyncSettings); + connect(this, &QApplication::aboutToQuit, [this]() + { + // If try to use the method QApplication::exit program can't sync settings and show warning about QApplication + // instance. Solution is to call sync() before quit. + // Connect this slot with VApplication::aboutToQuit. + Settings()->sync(); + }); } //--------------------------------------------------------------------------------------------------------------------- @@ -256,15 +262,6 @@ double VAbstractApplication::fromPixel(double pix) const return FromPixel(pix, _patternUnit); } -//--------------------------------------------------------------------------------------------------------------------- -void VAbstractApplication::SyncSettings() -{ - // If try to use the method QApplication::exit program can't sync settings and show warning about QApplication - // instance. Solution is to call sync() before quit. - // Connect this slot with VApplication::aboutToQuit. - Settings()->sync(); -} - //--------------------------------------------------------------------------------------------------------------------- void VAbstractApplication::LoadTranslation(const QString &locale) { diff --git a/src/libs/vmisc/vabstractapplication.h b/src/libs/vmisc/vabstractapplication.h index f8b02e013..13dbbaf05 100644 --- a/src/libs/vmisc/vabstractapplication.h +++ b/src/libs/vmisc/vabstractapplication.h @@ -96,9 +96,6 @@ public: virtual bool IsAppInGUIMode()const =0; -protected slots: - void SyncSettings(); - protected: QUndoStack *undoStack; diff --git a/src/libs/vtools/dialogs/support/dialogundo.cpp b/src/libs/vtools/dialogs/support/dialogundo.cpp index f915051be..4b858a632 100644 --- a/src/libs/vtools/dialogs/support/dialogundo.cpp +++ b/src/libs/vtools/dialogs/support/dialogundo.cpp @@ -48,9 +48,17 @@ DialogUndo::DialogUndo(QWidget *parent) } else { - connect(ui->pushButtonUndo, &QPushButton::clicked, this, &DialogUndo::Undo); + connect(ui->pushButtonUndo, &QPushButton::clicked, [this]() + { + result = UndoButton::Undo; + accept(); + }); } - connect(ui->pushButtonFix, &QPushButton::clicked, this, &DialogUndo::Fix); + connect(ui->pushButtonFix, &QPushButton::clicked, [this]() + { + result = UndoButton::Fix; + accept(); + }); connect(ui->pushButtonCancel, &QPushButton::clicked, this, &DialogUndo::Cancel); setCursor(Qt::ArrowCursor); @@ -62,20 +70,6 @@ DialogUndo::~DialogUndo() delete ui; } -//--------------------------------------------------------------------------------------------------------------------- -void DialogUndo::Undo() -{ - result = UndoButton::Undo; - accept(); -} - -//--------------------------------------------------------------------------------------------------------------------- -void DialogUndo::Fix() -{ - result = UndoButton::Fix; - accept(); -} - //--------------------------------------------------------------------------------------------------------------------- void DialogUndo::Cancel() { diff --git a/src/libs/vtools/dialogs/support/dialogundo.h b/src/libs/vtools/dialogs/support/dialogundo.h index ccb20873d..be9ef5c34 100644 --- a/src/libs/vtools/dialogs/support/dialogundo.h +++ b/src/libs/vtools/dialogs/support/dialogundo.h @@ -42,15 +42,13 @@ class DialogUndo : public QDialog { Q_OBJECT public: - explicit DialogUndo(QWidget *parent = 0); + explicit DialogUndo(QWidget *parent = nullptr); UndoButton Result() const; virtual ~DialogUndo() Q_DECL_OVERRIDE; -public slots: - void Undo(); - void Fix(); - void Cancel(); protected: - virtual void closeEvent ( QCloseEvent * event ) Q_DECL_OVERRIDE; + virtual void closeEvent ( QCloseEvent *event ) Q_DECL_OVERRIDE; +private slots: + void Cancel(); private: Q_DISABLE_COPY(DialogUndo) Ui::DialogUndo *ui; From 18e0f6750ad0951709a634e3fb9a49c9b19be86b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 18 Jul 2016 19:29:34 +0300 Subject: [PATCH 31/69] Refactoring. Fixed wrong using method tr(). --HG-- branch : develop --- src/app/valentina/dialogs/dialoghistory.cpp | 48 +++++++++---------- src/app/valentina/mainwindow.cpp | 8 ++-- src/app/valentina/mainwindowsnogui.cpp | 2 +- src/libs/vpatterndb/vformula.cpp | 10 ++-- .../line/vistoolcurveintersectaxis.cpp | 4 +- .../visualization/line/vistoolendline.cpp | 4 +- .../line/vistoollineintersectaxis.cpp | 4 +- 7 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/app/valentina/dialogs/dialoghistory.cpp b/src/app/valentina/dialogs/dialoghistory.cpp index 46170015f..097235731 100644 --- a/src/app/valentina/dialogs/dialoghistory.cpp +++ b/src/app/valentina/dialogs/dialoghistory.cpp @@ -232,35 +232,35 @@ QString DialogHistory::Record(const VToolRecord &tool) Q_UNREACHABLE(); //-V501 break; case Tool::BasePoint: - return QString(tr("%1 - Base point")).arg(PointName(tool.getId())); + return tr("%1 - Base point").arg(PointName(tool.getId())); case Tool::EndLine: - return QString(tr("%1_%2 - Line from point %1 to point %2")) + return tr("%1_%2 - Line from point %1 to point %2") .arg(PointName(AttrUInt(domElem, AttrBasePoint))) .arg(PointName(tool.getId())); case Tool::Line: - return QString(tr("%1_%2 - Line from point %1 to point %2")) + return tr("%1_%2 - Line from point %1 to point %2") .arg(PointName(AttrUInt(domElem, AttrFirstPoint))) .arg(PointName(AttrUInt(domElem, AttrSecondPoint))); case Tool::AlongLine: - return QString(tr("%3 - Point along line %1_%2")) + return tr("%3 - Point along line %1_%2") .arg(PointName(AttrUInt(domElem, AttrFirstPoint))) .arg(PointName(AttrUInt(domElem, AttrSecondPoint))) .arg(PointName(tool.getId())); case Tool::ShoulderPoint: - return QString(tr("%1 - Point of shoulder")).arg(PointName(tool.getId())); + return tr("%1 - Point of shoulder").arg(PointName(tool.getId())); case Tool::Normal: - return QString(tr("%3 - normal to line %1_%2")) + return tr("%3 - normal to line %1_%2") .arg(PointName(AttrUInt(domElem, AttrFirstPoint))) .arg(PointName(AttrUInt(domElem, AttrSecondPoint))) .arg(PointName(tool.getId())); case Tool::Bisector: - return QString(tr("%4 - bisector of angle %1_%2_%3")) + return tr("%4 - bisector of angle %1_%2_%3") .arg(PointName(AttrUInt(domElem, AttrFirstPoint))) .arg(PointName(AttrUInt(domElem, AttrSecondPoint))) .arg(PointName(AttrUInt(domElem, AttrThirdPoint))) .arg(PointName(tool.getId())); case Tool::LineIntersect: - return QString(tr("%5 - intersection of lines %1_%2 and %3_%4")) + return tr("%5 - intersection of lines %1_%2 and %3_%4") .arg(PointName(AttrUInt(domElem, AttrP1Line1))) .arg(PointName(AttrUInt(domElem, AttrP2Line1))) .arg(PointName(AttrUInt(domElem, AttrP1Line2))) @@ -288,7 +288,7 @@ QString DialogHistory::Record(const VToolRecord &tool) { const QSharedPointer arc = data->GeometricObject(tool.getId()); SCASSERT(arc != nullptr); - return QString(tr("%1 with length %2")) + return tr("%1 with length %2") .arg(arc->NameForHistory(tr("Arc"))) .arg(arc->GetLength()); } @@ -305,24 +305,24 @@ QString DialogHistory::Record(const VToolRecord &tool) return splPath->NameForHistory(tr("Cubic bezier curve path")); } case Tool::PointOfContact: - return QString(tr("%4 - point of contact of arc with the center in point %1 and line %2_%3")) + return tr("%4 - point of contact of arc with the center in point %1 and line %2_%3") .arg(PointName(AttrUInt(domElem, AttrCenter))) .arg(PointName(AttrUInt(domElem, AttrFirstPoint))) .arg(PointName(AttrUInt(domElem, AttrSecondPoint))) .arg(PointName(tool.getId())); case Tool::Height: - return QString(tr("Point of perpendicular from point %1 to line %2_%3")) + return tr("Point of perpendicular from point %1 to line %2_%3") .arg(PointName(AttrUInt(domElem, AttrBasePoint))) .arg(PointName(AttrUInt(domElem, AttrP1Line))) .arg(PointName(AttrUInt(domElem, AttrP2Line))); case Tool::Triangle: - return QString(tr("Triangle: axis %1_%2, points %3 and %4")) + return tr("Triangle: axis %1_%2, points %3 and %4") .arg(PointName(AttrUInt(domElem, AttrAxisP1))) .arg(PointName(AttrUInt(domElem, AttrAxisP2))) .arg(PointName(AttrUInt(domElem, AttrFirstPoint))) .arg(PointName(AttrUInt(domElem, AttrSecondPoint))); case Tool::PointOfIntersection: - return QString(tr("%1 - point of intersection %2 and %3")) + return tr("%1 - point of intersection %2 and %3") .arg(PointName(tool.getId())) .arg(PointName(AttrUInt(domElem, AttrFirstPoint))) .arg(PointName(AttrUInt(domElem, AttrSecondPoint))); @@ -330,7 +330,7 @@ QString DialogHistory::Record(const VToolRecord &tool) { const QSharedPointer arc = data->GeometricObject(AttrUInt(domElem, AttrArc)); SCASSERT(arc != nullptr); - return QString(tr("%1 - cut %2")) + return tr("%1 - cut %2") .arg(PointName(tool.getId())) .arg(arc->NameForHistory(tr("arc"))); } @@ -339,7 +339,7 @@ QString DialogHistory::Record(const VToolRecord &tool) const quint32 splineId = AttrUInt(domElem, VToolCutSpline::AttrSpline); const QSharedPointer spl = data->GeometricObject(splineId); SCASSERT(spl != nullptr); - return QString(tr("%1 - cut %2")) + return tr("%1 - cut %2") .arg(PointName(tool.getId())) .arg(spl->NameForHistory(tr("curve"))); } @@ -349,32 +349,32 @@ QString DialogHistory::Record(const VToolRecord &tool) const QSharedPointer splPath = data->GeometricObject(splinePathId); SCASSERT(splPath != nullptr); - return QString(tr("%1 - cut %2")) + return tr("%1 - cut %2") .arg(PointName(tool.getId())) .arg(splPath->NameForHistory(tr("curve path"))); } case Tool::LineIntersectAxis: - return QString(tr("%1 - point of intersection line %2_%3 and axis through point %4")) + return tr("%1 - point of intersection line %2_%3 and axis through point %4") .arg(PointName(tool.getId())) .arg(PointName(AttrUInt(domElem, AttrP1Line))) .arg(PointName(AttrUInt(domElem, AttrP2Line))) .arg(PointName(AttrUInt(domElem, AttrBasePoint))); case Tool::CurveIntersectAxis: - return QString(tr("%1 - point of intersection curve and axis through point %2")) + return tr("%1 - point of intersection curve and axis through point %2") .arg(PointName(tool.getId())) .arg(PointName(AttrUInt(domElem, AttrBasePoint))); case Tool::PointOfIntersectionArcs: - return QString(tr("%1 - point of arcs intersection")).arg(PointName(tool.getId())); + return tr("%1 - point of arcs intersection").arg(PointName(tool.getId())); case Tool::PointOfIntersectionCircles: - return QString(tr("%1 - point of circles intersection")).arg(PointName(tool.getId())); + return tr("%1 - point of circles intersection").arg(PointName(tool.getId())); case Tool::PointOfIntersectionCurves: - return QString(tr("%1 - point of curves intersection")).arg(PointName(tool.getId())); + return tr("%1 - point of curves intersection").arg(PointName(tool.getId())); case Tool::PointFromCircleAndTangent: - return QString(tr("%1 - point from circle and tangent")).arg(PointName(tool.getId())); + return tr("%1 - point from circle and tangent").arg(PointName(tool.getId())); case Tool::PointFromArcAndTangent: - return QString(tr("%1 - point from arc and tangent")).arg(PointName(tool.getId())); + return tr("%1 - point from arc and tangent").arg(PointName(tool.getId())); case Tool::TrueDarts: - return QString(tr("Correction the dart %1_%2_%3")) + return tr("Correction the dart %1_%2_%3") .arg(PointName(AttrUInt(domElem, AttrDartP1))) .arg(PointName(AttrUInt(domElem, AttrDartP2))) .arg(PointName(AttrUInt(domElem, AttrDartP2))); diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index ee9a8afa8..fd3985e67 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -2755,7 +2755,7 @@ void MainWindow::New() if (comboBoxDraws->count() == 0) { qCDebug(vMainWindow, "New PP."); - QString patternPieceName = QString(tr("Pattern piece %1")).arg(comboBoxDraws->count()+1); + QString patternPieceName = tr("Pattern piece %1").arg(comboBoxDraws->count()+1); qCDebug(vMainWindow, "Generated PP name: %s", qUtf8Printable(patternPieceName)); qCDebug(vMainWindow, "First PP"); @@ -3499,7 +3499,7 @@ void MainWindow::CreateActions() connect(ui->actionNewDraw, &QAction::triggered, [this]() { qCDebug(vMainWindow, "New PP."); - QString patternPieceName = QString(tr("Pattern piece %1")).arg(comboBoxDraws->count()+1); + QString patternPieceName = tr("Pattern piece %1").arg(comboBoxDraws->count()+1); qCDebug(vMainWindow, "Generated PP name: %s", qUtf8Printable(patternPieceName)); qCDebug(vMainWindow, "PP count %d", comboBoxDraws->count()); @@ -3988,8 +3988,8 @@ void MainWindow::ReopenFilesAfterCrash(QStringList &args) if (restoreFiles.size() > 0) { QMessageBox::StandardButton reply; - QString mes=QString(tr("Valentina didn't shut down correctly. " - "Do you want reopen files (%1) you had open?")).arg(restoreFiles.size()); + const QString mes = tr("Valentina didn't shut down correctly. Do you want reopen files (%1) you had open?") + .arg(restoreFiles.size()); reply = QMessageBox::question(this, tr("Reopen files."), mes, QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes); if (reply == QMessageBox::Yes) diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index b3e6b9e72..adbba5f1e 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -714,7 +714,7 @@ void MainWindowsNoGUI::PdfToPs(const QStringList ¶ms) const QFile f(params.last()); if (f.exists() == false) { - QString msg = QString(tr("Creating file '%1' failed! %2")).arg(params.last()).arg(proc.errorString()); + const QString msg = tr("Creating file '%1' failed! %2").arg(params.last()).arg(proc.errorString()); QMessageBox msgBox(QMessageBox::Critical, tr("Critical error!"), msg, QMessageBox::Ok | QMessageBox::Default); msgBox.exec(); } diff --git a/src/libs/vpatterndb/vformula.cpp b/src/libs/vpatterndb/vformula.cpp index 703146d8b..58a660578 100644 --- a/src/libs/vpatterndb/vformula.cpp +++ b/src/libs/vpatterndb/vformula.cpp @@ -39,14 +39,14 @@ //VFormula //--------------------------------------------------------------------------------------------------------------------- VFormula::VFormula() - :formula(QString()), value(QString(tr("Error"))), checkZero(true), data(nullptr), toolId(NULL_ID), + :formula(QString()), value(tr("Error")), checkZero(true), data(nullptr), toolId(NULL_ID), postfix(QString()), _error(true), dValue(0) {} //--------------------------------------------------------------------------------------------------------------------- VFormula::VFormula(const QString &formula, const VContainer *container) : formula(qApp->TrVars()->FormulaToUser(formula, qApp->Settings()->GetOsSeparator())), - value(QString(tr("Error"))), + value(tr("Error")), checkZero(true), data(container), toolId(NULL_ID), @@ -226,7 +226,7 @@ void VFormula::Eval() } if (formula.isEmpty()) { - value = QString(tr("Error")); + value = tr("Error"); _error = true; dValue = 0; } @@ -240,7 +240,7 @@ void VFormula::Eval() if (qIsInf(result) || qIsNaN(result)) { - value = QString(tr("Error")); + value = tr("Error"); _error = true; dValue = 0; } @@ -263,7 +263,7 @@ void VFormula::Eval() } catch (qmu::QmuParserError &e) { - value = QString(tr("Error")); + value = tr("Error"); _error = true; dValue = 0; qDebug() << "\nMath parser error:\n" diff --git a/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.cpp b/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.cpp index 1f10d0ad6..356886fb4 100644 --- a/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.cpp +++ b/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.cpp @@ -78,8 +78,8 @@ void VisToolCurveIntersectAxis::RefreshGeometry() DrawPoint(point, p, mainColor); - Visualization::toolTip = QString(tr("Intersection curve and axis: angle = %1°; Shift - " - "sticking angle, Enter - finish creation")) + Visualization::toolTip = tr("Intersection curve and axis: angle = %1°; Shift - " + "sticking angle, Enter - finish creation") .arg(this->line().angle()); } } diff --git a/src/libs/vtools/visualization/line/vistoolendline.cpp b/src/libs/vtools/visualization/line/vistoolendline.cpp index 0365ab7cc..ca9d7e373 100644 --- a/src/libs/vtools/visualization/line/vistoolendline.cpp +++ b/src/libs/vtools/visualization/line/vistoolendline.cpp @@ -70,8 +70,8 @@ void VisToolEndLine::RefreshGeometry() } DrawLine(this, line, mainColor, lineStyle); static const QString prefix = VDomDocument::UnitsToStr(qApp->patternUnit(), true); - Visualization::toolTip = QString(tr("Point at distance and angle: angle = %1°, length = %2%3; " - "Shift - sticking angle, Enter - finish creation")) + Visualization::toolTip = tr("Point at distance and angle: angle = %1°, length = %2%3; " + "Shift - sticking angle, Enter - finish creation") .arg(this->line().angle()) .arg(qApp->TrVars()->FormulaToUser(QString::number(qApp->fromPixel(this->line().length())), qApp->Settings()->GetOsSeparator())) diff --git a/src/libs/vtools/visualization/line/vistoollineintersectaxis.cpp b/src/libs/vtools/visualization/line/vistoollineintersectaxis.cpp index 8481818c4..b2b7becfa 100644 --- a/src/libs/vtools/visualization/line/vistoollineintersectaxis.cpp +++ b/src/libs/vtools/visualization/line/vistoollineintersectaxis.cpp @@ -93,8 +93,8 @@ void VisToolLineIntersectAxis::RefreshGeometry() DrawPoint(point, p, mainColor); ShowIntersection(axis_line, base_line); - Visualization::toolTip = QString(tr("Intersection line and axis: angle = %1°; Shift - " - "sticking angle, Enter - finish creation")) + Visualization::toolTip = tr("Intersection line and axis: angle = %1°; Shift - " + "sticking angle, Enter - finish creation") .arg(this->line().angle()); } } From 7cabc7df1836653aaf9e6eeac36e3f7650b6faf2 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 18 Jul 2016 22:55:18 +0300 Subject: [PATCH 32/69] Fixed loading recent files in main window. --HG-- branch : develop --- src/app/valentina/mainwindow.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index fd3985e67..7235ac556 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -3636,13 +3636,12 @@ void MainWindow::CreateActions() { recentFileActs[i] = new QAction(this); recentFileActs[i]->setVisible(false); - connect(recentFileActs[i], &QAction::triggered, [this]() + connect(recentFileActs[i], &QAction::triggered, this, [this]() { - QAction *action = qobject_cast(sender()); - if (action) + if (QAction *action = qobject_cast(sender())) { const QString filePath = action->data().toString(); - if (not filePath.isEmpty()) + if (not filePath.isEmpty()) { LoadPattern(filePath); } From 8b438daa6ca6149ad09c030096ed91c32b227bc6 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 18 Jul 2016 22:58:14 +0300 Subject: [PATCH 33/69] Slot OpenRecentFile in Tape replaced by lambda. --HG-- branch : develop --- src/app/tape/tmainwindow.cpp | 25 +++++++++++-------------- src/app/tape/tmainwindow.h | 1 - 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index cfae1b38e..a0b5e2d67 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -1743,7 +1743,17 @@ void TMainWindow::SetupMenu() for (int i = 0; i < MaxRecentFiles; ++i) { recentFileActs[i] = new QAction(this); - connect(recentFileActs[i], &QAction::triggered, this, &TMainWindow::OpenRecentFile); + connect(recentFileActs[i], &QAction::triggered, this, [this]() + { + if (auto action = qobject_cast(sender())) + { + const QString filePath = action->data().toString(); + if (not filePath.isEmpty()) + { + LoadFile(filePath); + } + } + }); ui->menuFile->insertAction(ui->actionPreferences, recentFileActs[i]); recentFileActs[i]->setVisible(false); } @@ -2778,19 +2788,6 @@ void TMainWindow::CreateWindowMenu(QMenu *menu) } } -//--------------------------------------------------------------------------------------------------------------------- -void TMainWindow::OpenRecentFile() -{ - if (auto action=qobject_cast(sender())) - { - const QString filePath = action->data().toString(); - if (not filePath.isEmpty()) - { - LoadFile(filePath); - } - } -} - //--------------------------------------------------------------------------------------------------------------------- bool TMainWindow::IgnoreLocking(int error, const QString &path) { diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index c7dff2a39..80683d98f 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -75,7 +75,6 @@ private slots: void OpenStandard(); void OpenTemplate(); void CreateFromExisting(); - void OpenRecentFile(); void FileSave(); void FileSaveAs(); From fc7e0bb6cbde60429651725ef4713c8534386f98 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 19 Jul 2016 20:50:42 +0300 Subject: [PATCH 34/69] Fixed Valentina crash after undo deleting detail. Emitting signal in lambda was not really good idea. --HG-- branch : develop --- src/libs/ifc/xml/vabstractpattern.cpp | 12 ++++++++++++ src/libs/ifc/xml/vabstractpattern.h | 2 ++ .../toolpoint/toolsinglepoint/vtoolbasepoint.cpp | 6 +++--- src/libs/vtools/tools/drawTools/vdrawtool.cpp | 2 +- src/libs/vtools/tools/vabstracttool.cpp | 2 +- src/libs/vtools/tools/vtooldetail.cpp | 4 ++-- 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index 8b43bcb04..465ec7716 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -1052,6 +1052,18 @@ void VAbstractPattern::haveLiteChange() emit patternChanged(false); } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractPattern::NeedFullParsing() +{ + emit UndoCommand(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractPattern::ClearScene() +{ + emit ClearMainWindow(); +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractPattern::ToolExists(const quint32 &id) const { diff --git a/src/libs/ifc/xml/vabstractpattern.h b/src/libs/ifc/xml/vabstractpattern.h index a6b7e7ab1..1788c8ca9 100644 --- a/src/libs/ifc/xml/vabstractpattern.h +++ b/src/libs/ifc/xml/vabstractpattern.h @@ -253,6 +253,8 @@ signals: public slots: virtual void LiteParseTree(const Document &parse)=0; void haveLiteChange(); + void NeedFullParsing(); + void ClearScene(); protected: /** @brief nameActivDraw name current pattern peace. */ diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp index b4f212b58..7e1c32dab 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolbasepoint.cpp @@ -143,8 +143,8 @@ void VToolBasePoint::AddToFile() patternPiece.appendChild(doc->createElement(VAbstractPattern::TagDetails)); AddPatternPiece *addPP = new AddPatternPiece(patternPiece, doc, namePP); - connect(addPP, &AddPatternPiece::ClearScene, [this](){emit doc->ClearMainWindow();}); - connect(addPP, &AddPatternPiece::NeedFullParsing, [this](){emit doc->UndoCommand();}); + connect(addPP, &AddPatternPiece::ClearScene, doc, &VAbstractPattern::ClearScene); + connect(addPP, &AddPatternPiece::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); qApp->getUndoStack()->push(addPP); } @@ -233,7 +233,7 @@ void VToolBasePoint::DeleteTool(bool ask) qCDebug(vTool, "Begin deleting."); DeletePatternPiece *deletePP = new DeletePatternPiece(doc, nameActivDraw); - connect(deletePP, &DeletePatternPiece::NeedFullParsing, [this](){emit doc->UndoCommand();}); + connect(deletePP, &DeletePatternPiece::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); qApp->getUndoStack()->push(deletePP); // Throw exception, this will help prevent case when we forget to immediately quit function. diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.cpp b/src/libs/vtools/tools/drawTools/vdrawtool.cpp index c88ffbcfe..81bbfb172 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.cpp +++ b/src/libs/vtools/tools/drawTools/vdrawtool.cpp @@ -372,7 +372,7 @@ qreal VDrawTool::CheckFormula(const quint32 &toolId, QString &formula, VContaine void VDrawTool::AddToCalculation(const QDomElement &domElement) { AddToCalc *addToCal = new AddToCalc(domElement, doc); - connect(addToCal, &AddToCalc::NeedFullParsing, [this](){emit doc->UndoCommand();}); + connect(addToCal, &AddToCalc::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); qApp->getUndoStack()->push(addToCal); } diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index 150a900f0..ad74b4cf4 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -88,7 +88,7 @@ void VAbstractTool::DeleteTool(bool ask) qCDebug(vTool, "Begin deleting."); DelTool *delTool = new DelTool(doc, id); - connect(delTool, &DelTool::NeedFullParsing, [this](){emit doc->UndoCommand();}); + connect(delTool, &DelTool::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); qApp->getUndoStack()->push(delTool); // Throw exception, this will help prevent case when we forget to immediately quit function. diff --git a/src/libs/vtools/tools/vtooldetail.cpp b/src/libs/vtools/tools/vtooldetail.cpp index 2d8041193..9eed8d8c3 100644 --- a/src/libs/vtools/tools/vtooldetail.cpp +++ b/src/libs/vtools/tools/vtooldetail.cpp @@ -331,7 +331,7 @@ void VToolDetail::AddToFile() } AddDet *addDet = new AddDet(domElement, doc, detail, drawName); - connect(addDet, &AddDet::NeedFullParsing, [this](){emit doc->UndoCommand();}); + connect(addDet, &AddDet::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); qApp->getUndoStack()->push(addDet); } @@ -680,7 +680,7 @@ void VToolDetail::DeleteTool(bool ask) return; } /* If UnionDetails tool delete detail no need emit FullParsing.*/ - connect(delDet, &DeleteDetail::NeedFullParsing, [this](){emit doc->UndoCommand();}); + connect(delDet, &DeleteDetail::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing); } qApp->getUndoStack()->push(delDet); From ce50203d570c16e46ed35edb302830cc1671c1a5 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 19 Jul 2016 20:51:12 +0300 Subject: [PATCH 35/69] Better code look. --HG-- branch : develop --- src/app/tape/dialogs/dialogabouttape.cpp | 3 ++- src/app/valentina/dialogs/dialogaboutapp.cpp | 3 ++- src/app/valentina/mainwindow.cpp | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/app/tape/dialogs/dialogabouttape.cpp b/src/app/tape/dialogs/dialogabouttape.cpp index 5c282bd9b..b3f45edd9 100644 --- a/src/app/tape/dialogs/dialogabouttape.cpp +++ b/src/app/tape/dialogs/dialogabouttape.cpp @@ -50,7 +50,8 @@ DialogAboutTape::DialogAboutTape(QWidget *parent) //mApp->Settings()->GetOsSeparator() ? setLocale(QLocale::system()) : setLocale(QLocale(QLocale::C)); RetranslateUi(); - connect(ui->pushButton_Web_Site, &QPushButton::clicked, [this](){ + connect(ui->pushButton_Web_Site, &QPushButton::clicked, [this]() + { if ( QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR)) == false) { qWarning() << tr("Cannot open your default browser"); diff --git a/src/app/valentina/dialogs/dialogaboutapp.cpp b/src/app/valentina/dialogs/dialogaboutapp.cpp index 3379cafb3..e0cdeca31 100644 --- a/src/app/valentina/dialogs/dialogaboutapp.cpp +++ b/src/app/valentina/dialogs/dialogaboutapp.cpp @@ -61,7 +61,8 @@ DialogAboutApp::DialogAboutApp(QWidget *parent) : ui->pushButton_Web_Site->setText(tr("Web site : %1").arg(VER_COMPANYDOMAIN_STR)); - connect(ui->pushButton_Web_Site, &QPushButton::clicked, [this](){ + connect(ui->pushButton_Web_Site, &QPushButton::clicked, [this]() + { if ( QDesktopServices::openUrl(QUrl(VER_COMPANYDOMAIN_STR)) == false) { qWarning() << tr("Cannot open your default browser"); diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 7235ac556..cb16125a6 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -140,7 +140,8 @@ MainWindow::MainWindow(QWidget *parent) connect(doc, &VPattern::patternChanged, this, &MainWindow::PatternChangesWereSaved); connect(doc, &VPattern::UndoCommand, this, &MainWindow::FullParseFile); connect(doc, &VPattern::SetEnabledGUI, this, &MainWindow::SetEnabledGUI); - connect(doc, &VPattern::CheckLayout, [this](){ + connect(doc, &VPattern::CheckLayout, [this]() + { if (pattern->DataDetails()->count() == 0) { if(not ui->actionDraw->isChecked()) From 817a5d5f561a8793540caf08a535f9ae7aaa42c9 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Jul 2016 11:10:23 +0300 Subject: [PATCH 36/69] Fixed suppression warnings in Release mode. Used wrong macros. --HG-- branch : develop --- src/app/tape/mapplication.cpp | 4 ++-- src/app/valentina/core/vapplication.cpp | 4 ++-- src/libs/vmisc/vmisc.pro | 5 +---- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/app/tape/mapplication.cpp b/src/app/tape/mapplication.cpp index 0f35cfabe..76eaea126 100644 --- a/src/app/tape/mapplication.cpp +++ b/src/app/tape/mapplication.cpp @@ -84,13 +84,13 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con type = QtWarningMsg; } -#if !defined(V_NO_DEBUG) +#if !defined(V_NO_ASSERT) // I have decided to hide this annoing message for release builds. if ((type == QtWarningMsg) && msg.contains("setGeometryDp: Unable to set geometry")) { type = QtDebugMsg; } -#endif //!defined(V_NO_DEBUG) +#endif //!defined(V_NO_ASSERT) #if defined(Q_OS_MAC) # if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) && QT_VERSION < QT_VERSION_CHECK(5, 7, 0) diff --git a/src/app/valentina/core/vapplication.cpp b/src/app/valentina/core/vapplication.cpp index a50edb882..bd5ad39ad 100644 --- a/src/app/valentina/core/vapplication.cpp +++ b/src/app/valentina/core/vapplication.cpp @@ -80,13 +80,13 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con type = QtWarningMsg; } -#if !defined(V_NO_DEBUG) +#if !defined(V_NO_ASSERT) // I have decided to hide this annoing message for release builds. if ((type == QtWarningMsg) && msg.contains("setGeometryDp: Unable to set geometry")) { type = QtDebugMsg; } -#endif //!defined(V_NO_DEBUG) +#endif //!defined(V_NO_ASSERT) #if defined(Q_OS_MAC) # if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) && QT_VERSION < QT_VERSION_CHECK(5, 7, 0) diff --git a/src/libs/vmisc/vmisc.pro b/src/libs/vmisc/vmisc.pro index a674a672f..df48dc12d 100644 --- a/src/libs/vmisc/vmisc.pro +++ b/src/libs/vmisc/vmisc.pro @@ -103,11 +103,8 @@ CONFIG(debug, debug|release){ } noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols - DEFINES += V_NO_DEBUG + # do nothing } else { - noCrashReports{ - DEFINES += V_NO_DEBUG - } !macx:!win32-msvc*{ # Turn on debug symbols in release mode on Unix systems. # On Mac OS X temporarily disabled. TODO: find way how to strip binary file. From dc275dce147308cefcc90bfb3ec48e2ab5071dc2 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Jul 2016 11:11:35 +0300 Subject: [PATCH 37/69] Fixed search string for error "setGeometry: Unable to set geometry". --HG-- branch : develop --- src/app/tape/mapplication.cpp | 2 +- src/app/valentina/core/vapplication.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/tape/mapplication.cpp b/src/app/tape/mapplication.cpp index 76eaea126..a64a77ea9 100644 --- a/src/app/tape/mapplication.cpp +++ b/src/app/tape/mapplication.cpp @@ -86,7 +86,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con #if !defined(V_NO_ASSERT) // I have decided to hide this annoing message for release builds. - if ((type == QtWarningMsg) && msg.contains("setGeometryDp: Unable to set geometry")) + if ((type == QtWarningMsg) && msg.contains("setGeometry: Unable to set geometry")) { type = QtDebugMsg; } diff --git a/src/app/valentina/core/vapplication.cpp b/src/app/valentina/core/vapplication.cpp index bd5ad39ad..8f611d7e1 100644 --- a/src/app/valentina/core/vapplication.cpp +++ b/src/app/valentina/core/vapplication.cpp @@ -82,7 +82,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con #if !defined(V_NO_ASSERT) // I have decided to hide this annoing message for release builds. - if ((type == QtWarningMsg) && msg.contains("setGeometryDp: Unable to set geometry")) + if ((type == QtWarningMsg) && msg.contains("setGeometry: Unable to set geometry")) { type = QtDebugMsg; } From f477904ef38b8a1b73f8056032eaca3e8873b5cb Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Jul 2016 11:25:53 +0300 Subject: [PATCH 38/69] Use QStringLiteral everywhere inside noisyFailureMsgHandler(). --HG-- branch : develop --- src/app/tape/mapplication.cpp | 15 ++++++++------- src/app/valentina/core/vapplication.cpp | 17 +++++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/app/tape/mapplication.cpp b/src/app/tape/mapplication.cpp index a64a77ea9..fd4b07c3e 100644 --- a/src/app/tape/mapplication.cpp +++ b/src/app/tape/mapplication.cpp @@ -79,14 +79,14 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con Q_UNUSED(context) // Why on earth didn't Qt want to make failed signal/slot connections qWarning? - if ((type == QtDebugMsg) && msg.contains("::connect")) + if ((type == QtDebugMsg) && msg.contains(QStringLiteral("::connect"))) { type = QtWarningMsg; } #if !defined(V_NO_ASSERT) // I have decided to hide this annoing message for release builds. - if ((type == QtWarningMsg) && msg.contains("setGeometry: Unable to set geometry")) + if ((type == QtWarningMsg) && msg.contains(QStringLiteral("setGeometry: Unable to set geometry"))) { type = QtDebugMsg; } @@ -97,7 +97,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // Try hide very annoying, Qt related, warnings in Mac OS X // QNSView mouseDragged: Internal mouse button tracking invalid (missing Qt::LeftButton) // https://bugreports.qt.io/browse/QTBUG-42846 - if ((type == QtWarningMsg) && msg.contains("QNSView")) + if ((type == QtWarningMsg) && msg.contains(QStringLiteral("QNSView"))) { type = QtDebugMsg; } @@ -106,7 +106,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // Hide Qt bug 'Assertion when reading an icns file' // https://bugreports.qt.io/browse/QTBUG-45537 // Remove after Qt fix will be released - if ((type == QtWarningMsg) && msg.contains("QICNSHandler::read()")) + if ((type == QtWarningMsg) && msg.contains(QStringLiteral("QICNSHandler::read()"))) { type = QtDebugMsg; } @@ -115,7 +115,8 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // this is another one that doesn't make sense as just a debug message. pretty serious // sign of a problem // http://www.developer.nokia.com/Community/Wiki/QPainter::begin:Paint_device_returned_engine_%3D%3D_0_(Known_Issue) - if ((type == QtDebugMsg) && msg.contains("QPainter::begin") && msg.contains("Paint device returned engine")) + if ((type == QtDebugMsg) && msg.contains(QStringLiteral("QPainter::begin")) + && msg.contains(QStringLiteral("Paint device returned engine"))) { type = QtWarningMsg; } @@ -123,8 +124,8 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // This qWarning about "Cowardly refusing to send clipboard message to hung application..." // is something that can easily happen if you are debugging and the application is paused. // As it is so common, not worth popping up a dialog. - if ((type == QtWarningMsg) && QString(msg).contains("QClipboard::event") - && QString(msg).contains("Cowardly refusing")) + if ((type == QtWarningMsg) && msg.contains(QStringLiteral("QClipboard::event")) + && msg.contains(QStringLiteral("Cowardly refusing"))) { type = QtDebugMsg; } diff --git a/src/app/valentina/core/vapplication.cpp b/src/app/valentina/core/vapplication.cpp index 8f611d7e1..a263c0b5f 100644 --- a/src/app/valentina/core/vapplication.cpp +++ b/src/app/valentina/core/vapplication.cpp @@ -75,14 +75,14 @@ Q_DECL_CONSTEXPR auto DAYS_TO_KEEP_LOGS = 3; inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { // Why on earth didn't Qt want to make failed signal/slot connections qWarning? - if ((type == QtDebugMsg) && msg.contains("::connect")) + if ((type == QtDebugMsg) && msg.contains(QStringLiteral("::connect"))) { type = QtWarningMsg; } #if !defined(V_NO_ASSERT) // I have decided to hide this annoing message for release builds. - if ((type == QtWarningMsg) && msg.contains("setGeometry: Unable to set geometry")) + if ((type == QtWarningMsg) && msg.contains(QStringLiteral("setGeometry: Unable to set geometry"))) { type = QtDebugMsg; } @@ -93,7 +93,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // Try hide very annoying, Qt related, warnings in Mac OS X // QNSView mouseDragged: Internal mouse button tracking invalid (missing Qt::LeftButton) // https://bugreports.qt.io/browse/QTBUG-42846 - if ((type == QtWarningMsg) && msg.contains("QNSView")) + if ((type == QtWarningMsg) && msg.contains(QStringLiteral("QNSView"))) { type = QtDebugMsg; } @@ -102,7 +102,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // Hide Qt bug 'Assertion when reading an icns file' // https://bugreports.qt.io/browse/QTBUG-45537 // Remove after Qt fix will be released - if ((type == QtWarningMsg) && msg.contains("QICNSHandler::read()")) + if ((type == QtWarningMsg) && msg.contains(QStringLiteral("QICNSHandler::read()"))) { type = QtDebugMsg; } @@ -111,7 +111,8 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // this is another one that doesn't make sense as just a debug message. pretty serious // sign of a problem // http://www.developer.nokia.com/Community/Wiki/QPainter::begin:Paint_device_returned_engine_%3D%3D_0_(Known_Issue) - if ((type == QtDebugMsg) && msg.contains("QPainter::begin") && msg.contains("Paint device returned engine")) + if ((type == QtDebugMsg) && msg.contains(QStringLiteral("QPainter::begin")) + && msg.contains(QStringLiteral("Paint device returned engine"))) { type = QtWarningMsg; } @@ -119,8 +120,8 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con // This qWarning about "Cowardly refusing to send clipboard message to hung application..." // is something that can easily happen if you are debugging and the application is paused. // As it is so common, not worth popping up a dialog. - if ((type == QtWarningMsg) && QString(msg).contains("QClipboard::event") - && QString(msg).contains("Cowardly refusing")) + if ((type == QtWarningMsg) && msg.contains(QStringLiteral("QClipboard::event")) + && msg.contains(QStringLiteral("Cowardly refusing"))) { type = QtDebugMsg; } @@ -132,7 +133,7 @@ inline void noisyFailureMsgHandler(QtMsgType type, const QMessageLogContext &con const bool isGuiThread = instance && (QThread::currentThread() == instance->thread()); { - QString debugdate = "[" + QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss"); + QString debugdate = "[" + QDateTime::currentDateTime().toString(QStringLiteral("yyyy.MM.dd hh:mm:ss")); switch (type) { From 1bffa92127c90edab0b0be61a15aea6e1a6a36c7 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Jul 2016 11:39:15 +0300 Subject: [PATCH 39/69] Using QLatin1String instead of QLatin1Literal. QLatin1Literal is just a typedef of QLatin1String lefter for compatibility with Qt 4.x. --HG-- branch : develop --- src/app/tape/tmainwindow.cpp | 6 +++--- .../valentina/dialogs/dialoglayoutsettings.cpp | 10 +++++----- src/app/valentina/dialogs/dialogsavelayout.cpp | 16 ++++++++-------- src/app/valentina/mainwindow.cpp | 10 +++++----- src/app/valentina/mainwindowsnogui.cpp | 2 +- src/app/valentina/xml/vpattern.cpp | 2 +- src/libs/fervor/fvupdater.cpp | 6 +++--- src/libs/ifc/xml/vabstractconverter.cpp | 2 +- src/libs/ifc/xml/vabstractpattern.cpp | 6 +++--- src/libs/ifc/xml/vdomdocument.cpp | 2 +- src/libs/ifc/xml/vpatternconverter.cpp | 4 ++-- src/libs/ifc/xml/vvitconverter.cpp | 2 +- src/libs/ifc/xml/vvstconverter.cpp | 2 +- src/libs/vmisc/projectversion.cpp | 8 ++++---- src/libs/vmisc/vabstractapplication.cpp | 6 +++--- src/libs/vmisc/vlockguard.h | 4 ++-- .../vtools/dialogs/tools/dialogalongline.cpp | 2 +- src/libs/vtools/dialogs/tools/dialogdetail.cpp | 2 +- .../vtools/dialogs/tools/dialogsplinepath.cpp | 2 +- src/test/ValentinaTest/abstracttest.cpp | 4 ++-- src/test/ValentinaTest/tst_measurementregexp.cpp | 10 +++++----- src/test/ValentinaTest/tst_qmuparsererrormsg.cpp | 4 ++-- src/test/ValentinaTest/tst_tstranslation.cpp | 16 ++++++++-------- .../ValentinaTest/tst_valentinacommandline.cpp | 14 +++++++------- 24 files changed, 71 insertions(+), 71 deletions(-) diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index a0b5e2d67..ca3e7feb5 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -2002,7 +2002,7 @@ void TMainWindow::ShowHeaderUnits(QTableWidget *table, int column, const QString SCASSERT(table != nullptr); QString header = table->horizontalHeaderItem(column)->text(); - const int index = header.indexOf(QLatin1Literal("(")); + const int index = header.indexOf(QLatin1String("(")); if (index != -1) { header.remove(index-1, 100); @@ -2026,7 +2026,7 @@ void TMainWindow::SetCurrentFile(const QString &fileName) if (curFile.isEmpty()) { shownName = tr("untitled"); - mType == MeasurementsType::Standard ? shownName += QLatin1Literal(".vst") : shownName += QLatin1Literal(".vit"); + mType == MeasurementsType::Standard ? shownName += QLatin1String(".vst") : shownName += QLatin1String(".vit"); ui->lineEditPathToFile->setText(tr("")); ui->lineEditPathToFile->setToolTip(tr("File was not saved yet.")); ui->lineEditPathToFile->setCursorPosition(0); @@ -2055,7 +2055,7 @@ void TMainWindow::SetCurrentFile(const QString &fileName) #if defined(Q_OS_MAC) static QIcon fileIcon = QIcon(QApplication::applicationDirPath() + - QLatin1Literal("/../Resources/measurements.icns")); + QLatin1String("/../Resources/measurements.icns")); QIcon icon; if (not curFile.isEmpty()) { diff --git a/src/app/valentina/dialogs/dialoglayoutsettings.cpp b/src/app/valentina/dialogs/dialoglayoutsettings.cpp index b786d92b7..99e9ba304 100644 --- a/src/app/valentina/dialogs/dialoglayoutsettings.cpp +++ b/src/app/valentina/dialogs/dialoglayoutsettings.cpp @@ -43,11 +43,11 @@ //must be the same order as PaperSizeTemplate constants const DialogLayoutSettings::FormatsVector DialogLayoutSettings::pageFormatNames = - DialogLayoutSettings::FormatsVector () << QLatin1Literal("A0") - << QLatin1Literal("A1") - << QLatin1Literal("A2") - << QLatin1Literal("A3") - << QLatin1Literal("A4") + DialogLayoutSettings::FormatsVector () << QLatin1String("A0") + << QLatin1String("A1") + << QLatin1String("A2") + << QLatin1String("A3") + << QLatin1String("A4") << QApplication::translate("DialogLayoutSettings", "Letter") << QApplication::translate("DialogLayoutSettings", "Legal") << QApplication::translate("DialogLayoutSettings", "Roll 24in") diff --git a/src/app/valentina/dialogs/dialogsavelayout.cpp b/src/app/valentina/dialogs/dialogsavelayout.cpp index 380067988..3e6415850 100644 --- a/src/app/valentina/dialogs/dialogsavelayout.cpp +++ b/src/app/valentina/dialogs/dialogsavelayout.cpp @@ -67,7 +67,7 @@ DialogSaveLayout::DialogSaveLayout(int count, const QString &fileName, QWidget * ui->lineEditFileName->setValidator( new QRegExpValidator(QRegExp(baseFilenameRegExp), this)); #endif - const QString mask = fileName+QLatin1Literal("_"); + const QString mask = fileName+QLatin1String("_"); if (VApplication::IsGUIMode()) { ui->lineEditFileName->setText(mask); @@ -299,15 +299,15 @@ bool DialogSaveLayout::TestPdf() QVector> DialogSaveLayout::InitAvailFormats() { QVector> list; - list.append(std::make_pair(tr("Svg files (*.svg)"), QLatin1Literal(".svg"))); - list.append(std::make_pair(tr("PDF files (*.pdf)"), QLatin1Literal(".pdf"))); - list.append(std::make_pair(tr("Images (*.png)"), QLatin1Literal(".png"))); - list.append(std::make_pair(tr("Wavefront OBJ (*.obj)"), QLatin1Literal(".obj"))); + list.append(std::make_pair(tr("Svg files (*.svg)"), QLatin1String(".svg"))); + list.append(std::make_pair(tr("PDF files (*.pdf)"), QLatin1String(".pdf"))); + list.append(std::make_pair(tr("Images (*.png)"), QLatin1String(".png"))); + list.append(std::make_pair(tr("Wavefront OBJ (*.obj)"), QLatin1String(".obj"))); if (SupportPSTest()) { - list.append(std::make_pair(tr("PS files (*.ps)"), QLatin1Literal(".ps"))); - list.append(std::make_pair(tr("EPS files (*.eps)"), QLatin1Literal(".eps"))); + list.append(std::make_pair(tr("PS files (*.ps)"), QLatin1String(".ps"))); + list.append(std::make_pair(tr("EPS files (*.eps)"), QLatin1String(".eps"))); } - list.append(std::make_pair(tr("DXF files (*.dxf)"), QLatin1Literal(".dxf"))); + list.append(std::make_pair(tr("DXF files (*.dxf)"), QLatin1String(".dxf"))); return list; } diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index cb16125a6..03e8cbb00 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -3020,7 +3020,7 @@ bool MainWindow::SavePattern(const QString &fileName, QString &error) const bool result = doc->SaveDocument(fileName, error); if (result) { - if (tempInfo.suffix() != QLatin1Literal("autosave")) + if (tempInfo.suffix() != QLatin1String("autosave")) { setCurrentFile(fileName); helpLabel->setText(tr("File saved")); @@ -4419,7 +4419,7 @@ QString MainWindow::GetPatternFileName() { shownName = StrippedName(curFile); } - shownName += QLatin1Literal("[*]"); + shownName += QLatin1String("[*]"); return shownName; } @@ -4437,10 +4437,10 @@ QString MainWindow::GetMeasurementFileName() if(mChanges) { - shownName += QLatin1Literal("*"); + shownName += QLatin1String("*"); } - shownName += QLatin1Literal("]"); + shownName += QLatin1String("]"); return shownName; } } @@ -4460,7 +4460,7 @@ void MainWindow::UpdateWindowTitle() #if defined(Q_OS_MAC) static QIcon fileIcon = QIcon(QApplication::applicationDirPath() + - QLatin1Literal("/../Resources/Valentina.icns")); + QLatin1String("/../Resources/Valentina.icns")); QIcon icon; if (not curFile.isEmpty()) { diff --git a/src/app/valentina/mainwindowsnogui.cpp b/src/app/valentina/mainwindowsnogui.cpp index adbba5f1e..7a437b7a7 100644 --- a/src/app/valentina/mainwindowsnogui.cpp +++ b/src/app/valentina/mainwindowsnogui.cpp @@ -958,7 +958,7 @@ void MainWindowsNoGUI::SetPrinterSettings(QPrinter *printer, const PrintType &pr #ifdef Q_OS_WIN printer->setOutputFileName(outputFileName); #else - printer->setOutputFileName(outputFileName + QLatin1Literal(".pdf")); + printer->setOutputFileName(outputFileName + QLatin1String(".pdf")); #endif #ifdef Q_OS_MAC diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index 8202161e1..36c49a46f 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -333,7 +333,7 @@ bool VPattern::SaveDocument(const QString &fileName, QString &error) const } const bool saved = VAbstractPattern::SaveDocument(fileName, error); - if (saved && QFileInfo(fileName).suffix() != QLatin1Literal("autosave")) + if (saved && QFileInfo(fileName).suffix() != QLatin1String("autosave")) { modified = false; } diff --git a/src/libs/fervor/fvupdater.cpp b/src/libs/fervor/fvupdater.cpp index 946412ab0..b8646397b 100644 --- a/src/libs/fervor/fvupdater.cpp +++ b/src/libs/fervor/fvupdater.cpp @@ -339,13 +339,13 @@ bool FvUpdater::xmlParseFeed() if (m_xml.isStartElement()) { - if (m_xml.name() == QLatin1Literal("item")) + if (m_xml.name() == QLatin1String("item")) { xmlEnclosureUrl.clear(); xmlEnclosureVersion.clear(); xmlEnclosurePlatform.clear(); } - else if (m_xml.name() == QLatin1Literal("enclosure")) + else if (m_xml.name() == QLatin1String("enclosure")) { const QXmlStreamAttributes attribs = m_xml.attributes(); const QString fervorPlatform = QStringLiteral("fervor:platform"); @@ -381,7 +381,7 @@ bool FvUpdater::xmlParseFeed() } else if (m_xml.isEndElement()) { - if (m_xml.name() == QLatin1Literal("item")) + if (m_xml.name() == QLatin1String("item")) { // That's it - we have analyzed a single and we'll stop // here (because the topmost is the most recent one, and thus diff --git a/src/libs/ifc/xml/vabstractconverter.cpp b/src/libs/ifc/xml/vabstractconverter.cpp index 079da3610..3f057de70 100644 --- a/src/libs/ifc/xml/vabstractconverter.cpp +++ b/src/libs/ifc/xml/vabstractconverter.cpp @@ -57,7 +57,7 @@ void VAbstractConverter::Convert() } QString error; - const QString backupFileName = fileName + QLatin1Literal(".backup"); + const QString backupFileName = fileName + QLatin1String(".backup"); if (SafeCopy(fileName, backupFileName, error) == false) { const QString errorMsg(tr("Error creating a backup file: %1.").arg(error)); diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index 465ec7716..015f57b62 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -149,7 +149,7 @@ QStringList VAbstractPattern::ListMeasurements() const const QList tValues = tokens.values(); for (int j = 0; j < tValues.size(); ++j) { - if (tValues.at(j) == QLatin1Literal("-")) + if (tValues.at(j) == QLatin1String("-")) { continue; } @@ -1126,11 +1126,11 @@ QDomElement VAbstractPattern::CheckTagExists(const QString &tag) element = createElement(TagGradation); QDomElement heights = createElement(TagHeights); - heights.setAttribute(AttrAll, QLatin1Literal("true")); + heights.setAttribute(AttrAll, QLatin1String("true")); element.appendChild(heights); QDomElement sizes = createElement(TagSizes); - sizes.setAttribute(AttrAll, QLatin1Literal("true")); + sizes.setAttribute(AttrAll, QLatin1String("true")); element.appendChild(sizes); break; } diff --git a/src/libs/ifc/xml/vdomdocument.cpp b/src/libs/ifc/xml/vdomdocument.cpp index 0a44f9841..11eaef7cc 100644 --- a/src/libs/ifc/xml/vdomdocument.cpp +++ b/src/libs/ifc/xml/vdomdocument.cpp @@ -771,7 +771,7 @@ bool VDomDocument::SafeCopy(const QString &source, const QString &destination, Q qt_ntfs_permission_lookup++; // turn checking on #endif /*Q_OS_WIN32*/ - QTemporaryFile destFile(destination + QLatin1Literal(".XXXXXX")); + QTemporaryFile destFile(destination + QLatin1String(".XXXXXX")); destFile.setAutoRemove(false); if (not destFile.open()) { diff --git a/src/libs/ifc/xml/vpatternconverter.cpp b/src/libs/ifc/xml/vpatternconverter.cpp index dd72da2b6..f9170188c 100644 --- a/src/libs/ifc/xml/vpatternconverter.cpp +++ b/src/libs/ifc/xml/vpatternconverter.cpp @@ -179,7 +179,7 @@ void VPatternConverter::ApplyPatches() catch (VException &e) { QString error; - const QString backupFileName = fileName + QLatin1Literal(".backup"); + const QString backupFileName = fileName + QLatin1String(".backup"); if (SafeCopy(backupFileName, fileName, error) == false) { const QString errorMsg(tr("Error restoring backup file: %1.").arg(error)); @@ -894,7 +894,7 @@ void VPatternConverter::ParseModelingToV0_2_4(const QDomElement &modeling) QDomElement node = modeling.firstChild().toElement(); while (not node.isNull()) { - if (node.tagName() == QLatin1Literal("tools")) + if (node.tagName() == QLatin1String("tools")) { const quint32 toolId = node.attribute(QStringLiteral("id")).toUInt(); QVector children; diff --git a/src/libs/ifc/xml/vvitconverter.cpp b/src/libs/ifc/xml/vvitconverter.cpp index adbc1a058..94c317b49 100644 --- a/src/libs/ifc/xml/vvitconverter.cpp +++ b/src/libs/ifc/xml/vvitconverter.cpp @@ -110,7 +110,7 @@ void VVITConverter::ApplyPatches() catch (VException &e) { QString error; - const QString backupFileName = fileName + QLatin1Literal(".backup"); + const QString backupFileName = fileName + QLatin1String(".backup"); if (SafeCopy(backupFileName, fileName, error) == false) { const QString errorMsg(tr("Error restoring backup file: %1.").arg(error)); diff --git a/src/libs/ifc/xml/vvstconverter.cpp b/src/libs/ifc/xml/vvstconverter.cpp index 56b428588..37136c3f9 100644 --- a/src/libs/ifc/xml/vvstconverter.cpp +++ b/src/libs/ifc/xml/vvstconverter.cpp @@ -104,7 +104,7 @@ void VVSTConverter::ApplyPatches() catch (VException &e) { QString error; - const QString backupFileName = fileName + QLatin1Literal(".backup"); + const QString backupFileName = fileName + QLatin1String(".backup"); if (SafeCopy(backupFileName, fileName, error) == false) { const QString errorMsg(tr("Error restoring backup file: %1.").arg(error)); diff --git a/src/libs/vmisc/projectversion.cpp b/src/libs/vmisc/projectversion.cpp index 89d73c2cd..ab620ce3f 100644 --- a/src/libs/vmisc/projectversion.cpp +++ b/src/libs/vmisc/projectversion.cpp @@ -44,13 +44,13 @@ QString compilerString() #if defined(Q_CC_INTEL) // must be before GNU, Clang and MSVC because ICC/ICL claim to be them QString iccCompact; #ifdef __INTEL_CLANG_COMPILER - iccCompact = QLatin1Literal("Clang"); + iccCompact = QLatin1String("Clang"); #elif defined(__INTEL_MS_COMPAT_LEVEL) - iccCompact = QLatin1Literal("Microsoft"); + iccCompact = QLatin1String("Microsoft"); #elif defined(__GNUC__) - iccCompact = QLatin1Literal("GCC"); + iccCompact = QLatin1String("GCC"); #else - iccCompact = QLatin1Literal("no"); + iccCompact = QLatin1String("no"); #endif QString iccVersion; if (__INTEL_COMPILER >= 1300) diff --git a/src/libs/vmisc/vabstractapplication.cpp b/src/libs/vmisc/vabstractapplication.cpp index 14f52abb0..4304f7761 100644 --- a/src/libs/vmisc/vabstractapplication.cpp +++ b/src/libs/vmisc/vabstractapplication.cpp @@ -102,12 +102,12 @@ QString VAbstractApplication::translationsPath(const QString &locale) const QString mainPath; if (locale.isEmpty()) { - mainPath = QApplication::applicationDirPath() + QLatin1Literal("/../Resources") + trPath; + mainPath = QApplication::applicationDirPath() + QLatin1String("/../Resources") + trPath; } else { - mainPath = QApplication::applicationDirPath() + QLatin1Literal("/../Resources") + trPath + QLatin1Literal("/") - + locale + QLatin1Literal(".lproj"); + mainPath = QApplication::applicationDirPath() + QLatin1String("/../Resources") + trPath + QLatin1String("/") + + locale + QLatin1String(".lproj"); } QDir dirBundle(mainPath); if (dirBundle.exists()) diff --git a/src/libs/vmisc/vlockguard.h b/src/libs/vmisc/vlockguard.h index bb87e26aa..a266ff2a4 100644 --- a/src/libs/vmisc/vlockguard.h +++ b/src/libs/vmisc/vlockguard.h @@ -156,10 +156,10 @@ bool VLockGuard::TryLock(const QString &lockName, int stale, int timeou #if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0) - lockFile = lockName + QLatin1Literal(".lock"); + lockFile = lockName + QLatin1String(".lock"); #if defined(Q_OS_UNIX) QFileInfo info(lockFile); - lockFile = info.absolutePath() + QLatin1Literal("/.") + info.fileName(); + lockFile = info.absolutePath() + QLatin1String("/.") + info.fileName(); #endif lock.reset(new QLockFile(lockFile)); diff --git a/src/libs/vtools/dialogs/tools/dialogalongline.cpp b/src/libs/vtools/dialogs/tools/dialogalongline.cpp index 117e03e1a..3b0f14df4 100644 --- a/src/libs/vtools/dialogs/tools/dialogalongline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogalongline.cpp @@ -179,7 +179,7 @@ void DialogAlongLine::ChosenObject(quint32 id, const SceneObject &type) line->RefreshGeometry(); if (buildMidpoint) { - SetFormula(currentLength + QLatin1Literal("/2")); + SetFormula(currentLength + QLatin1String("/2")); } prepare = true; this->setModal(true); diff --git a/src/libs/vtools/dialogs/tools/dialogdetail.cpp b/src/libs/vtools/dialogs/tools/dialogdetail.cpp index e79102c4e..7119afdaa 100644 --- a/src/libs/vtools/dialogs/tools/dialogdetail.cpp +++ b/src/libs/vtools/dialogs/tools/dialogdetail.cpp @@ -508,7 +508,7 @@ bool DialogDetail::DetailIsValid() const QByteArray byteArray; QBuffer buffer(&byteArray); pixmap.save(&buffer, "PNG"); - QString url = QString(" "); + QString url = QString(" "); if(CreateDetail().ContourPoints(data).count() < 3) { diff --git a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp index d025c97d3..9355f8ca7 100644 --- a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp @@ -934,6 +934,6 @@ void DialogSplinePath::ShowPointIssue(const QString &pName) } else { - item->setText(pName + QLatin1Literal("(!)")); + item->setText(pName + QLatin1String("(!)")); } } diff --git a/src/test/ValentinaTest/abstracttest.cpp b/src/test/ValentinaTest/abstracttest.cpp index a54d1b1b2..aca37f533 100644 --- a/src/test/ValentinaTest/abstracttest.cpp +++ b/src/test/ValentinaTest/abstracttest.cpp @@ -55,7 +55,7 @@ QString AbstractTest::ValentinaPath() const { const QString path = QStringLiteral("/../../../app/valentina/bin/valentina"); #ifdef Q_OS_WIN - return QApplication::applicationDirPath() + path + QLatin1Literal(".exe"); + return QApplication::applicationDirPath() + path + QLatin1String(".exe"); #else return QApplication::applicationDirPath() + path; #endif @@ -66,7 +66,7 @@ QString AbstractTest::TapePath() const { const QString path = QStringLiteral("/../../../app/tape/bin/tape"); #ifdef Q_OS_WIN - return QApplication::applicationDirPath() + path + QLatin1Literal(".exe"); + return QApplication::applicationDirPath() + path + QLatin1String(".exe"); #else return QApplication::applicationDirPath() + path; #endif diff --git a/src/test/ValentinaTest/tst_measurementregexp.cpp b/src/test/ValentinaTest/tst_measurementregexp.cpp index f71d54a91..0cafa210c 100644 --- a/src/test/ValentinaTest/tst_measurementregexp.cpp +++ b/src/test/ValentinaTest/tst_measurementregexp.cpp @@ -431,7 +431,7 @@ int TST_MeasurementRegExp::LoadMeasurements(const QString &checkedSystem, const const QString path = TranslationsPath(); const QString file = QString("measurements_%1_%2.qm").arg(checkedSystem).arg(checkedLocale); - if (QFileInfo(path+QLatin1Literal("/")+file).size() <= 34) + if (QFileInfo(path+QLatin1String("/")+file).size() <= 34) { const QString message = QString("Translation for system = %1 and locale = %2 is empty. \nFull path: %3/%4") .arg(checkedSystem) @@ -482,7 +482,7 @@ int TST_MeasurementRegExp::LoadVariables(const QString &checkedLocale) const QString path = TranslationsPath(); const QString file = QString("valentina_%1.qm").arg(checkedLocale); - if (QFileInfo(path+QLatin1Literal("/")+file).size() <= 34) + if (QFileInfo(path+QLatin1String("/")+file).size() <= 34) { const QString message = QString("Translation variables for locale = %1 is empty. \nFull path: %2/%3") .arg(checkedLocale) @@ -660,7 +660,7 @@ void TST_MeasurementRegExp::CheckUnderlineExists() const while (i != data.constEnd()) { const QString translated = trMs->InternalVarToUser(i.key()); - if ((translated.right(1) == QLatin1Literal("_")) != i.value()) + if ((translated.right(1) == QLatin1String("_")) != i.value()) { const QString message = QString("String '%1' doesn't contain underline. Original string is '%2'") .arg(translated).arg(i.key()); @@ -676,11 +676,11 @@ void TST_MeasurementRegExp::CheckInternalVaribleRegExp() const const QString regex = QStringLiteral("(.){1,}_(.){1,}$"); foreach(const QString &var, builInVariables) { - const QString sourceRegex = QLatin1Literal("^") + var + regex; + const QString sourceRegex = QLatin1String("^") + var + regex; const QRegularExpression sourceRe(sourceRegex); const QString translated = trMs->InternalVarToUser(var); - const QString translationRegex = QLatin1Literal("^") + translated + regex; + const QString translationRegex = QLatin1String("^") + translated + regex; const QRegularExpression translationRe(translationRegex); const QStringList originalNames = AllGroupNames() + builInFunctions + builInVariables; diff --git a/src/test/ValentinaTest/tst_qmuparsererrormsg.cpp b/src/test/ValentinaTest/tst_qmuparsererrormsg.cpp index b2dbcaffe..89fe8ce07 100644 --- a/src/test/ValentinaTest/tst_qmuparsererrormsg.cpp +++ b/src/test/ValentinaTest/tst_qmuparsererrormsg.cpp @@ -212,6 +212,6 @@ void TST_QmuParserErrorMsg::CheckStrings(int code, bool tok, bool pos) const QString translated = (*msg)[code]; const QString message = QString("String: '%1'.").arg(translated); - QVERIFY2((translated.indexOf(QLatin1Literal("$TOK$")) != -1) == tok, qUtf8Printable(message)); - QVERIFY2((translated.indexOf(QLatin1Literal("$POS$")) != -1) == pos, qUtf8Printable(message)); + QVERIFY2((translated.indexOf(QLatin1String("$TOK$")) != -1) == tok, qUtf8Printable(message)); + QVERIFY2((translated.indexOf(QLatin1String("$POS$")) != -1) == pos, qUtf8Printable(message)); } diff --git a/src/test/ValentinaTest/tst_tstranslation.cpp b/src/test/ValentinaTest/tst_tstranslation.cpp index 8015a8b2a..1e789e98f 100644 --- a/src/test/ValentinaTest/tst_tstranslation.cpp +++ b/src/test/ValentinaTest/tst_tstranslation.cpp @@ -116,7 +116,7 @@ void TST_TSTranslation::CheckEmptyToolButton() continue; } - if (source == QLatin1Literal("...")) + if (source == QLatin1String("...")) { const QDomElement translationTag = message.firstChildElement(TagTranslation); if (translationTag.hasAttribute(AttrType)) @@ -210,7 +210,7 @@ void TST_TSTranslation::CheckPlaceMarkerExist() for (int i = 1; i <= 99; ++i) { - const QString marker = QLatin1Literal("%") + QString().setNum(i); + const QString marker = QLatin1String("%") + QString().setNum(i); const bool sourceMark = source.indexOf(marker) != -1; if (sourceMark) { @@ -218,8 +218,8 @@ void TST_TSTranslation::CheckPlaceMarkerExist() if (sourceMarkCount != i) { const QString message = QString("In source string '%1' was missed place marker ") - .arg(source) + QLatin1Literal("'%") + QString().setNum(sourceMarkCount) + - QLatin1Literal("'."); + .arg(source) + QLatin1String("'%") + QString().setNum(sourceMarkCount) + + QLatin1String("'."); QFAIL(qUtf8Printable(message)); } } @@ -231,8 +231,8 @@ void TST_TSTranslation::CheckPlaceMarkerExist() if (translationMarkCount != i) { const QString message = QString("In translation string '%1' was missed place marker ") - .arg(translation) + QLatin1Literal("'%") + QString().setNum(translationMarkCount) + - QLatin1Literal("'."); + .arg(translation) + QLatin1String("'%") + QString().setNum(translationMarkCount) + + QLatin1String("'."); QFAIL(qUtf8Printable(message)); } } @@ -241,8 +241,8 @@ void TST_TSTranslation::CheckPlaceMarkerExist() { const QString message = QString("Compare to source string in the translation string '%1' was missed place marker ") - .arg(translation) + QLatin1Literal("'%") + QString().setNum(sourceMarkCount) + - QLatin1Literal("'."); + .arg(translation) + QLatin1String("'%") + QString().setNum(sourceMarkCount) + + QLatin1String("'."); QFAIL(qUtf8Printable(message)); } } diff --git a/src/test/ValentinaTest/tst_valentinacommandline.cpp b/src/test/ValentinaTest/tst_valentinacommandline.cpp index a9c7283f7..b1885dd11 100644 --- a/src/test/ValentinaTest/tst_valentinacommandline.cpp +++ b/src/test/ValentinaTest/tst_valentinacommandline.cpp @@ -51,7 +51,7 @@ void TST_ValentinaCommandLine::init() } if (not CopyRecursively(QApplication::applicationDirPath() + QDir::separator() + - QLatin1Literal("tst_valentina"), + QLatin1String("tst_valentina"), QApplication::applicationDirPath() + QDir::separator() + tmpTestFolder)) { QFAIL("Fail to prepare test files for testing."); @@ -66,7 +66,7 @@ void TST_ValentinaCommandLine::init() } if (not CopyRecursively(QApplication::applicationDirPath() + QDir::separator() + - QLatin1Literal("tst_valentina_collection"), + QLatin1String("tst_valentina_collection"), QApplication::applicationDirPath() + QDir::separator() + tmpTestCollectionFolder)) { QFAIL("Fail to prepare collection files for testing."); @@ -199,25 +199,25 @@ void TST_ValentinaCommandLine::TestMode_data() const QTest::newRow("Issue #256. Correct individual measurements.")<< "issue_256.val" << QString("--test;;-m;;%1").arg(tmp + QDir::separator() + - QLatin1Literal("issue_256_correct.vit")) + QLatin1String("issue_256_correct.vit")) << true << V_EX_OK; QTest::newRow("Issue #256. Wrong individual measurements.")<< "issue_256.val" << QString("--test;;-m;;%1").arg(tmp + QDir::separator() + - QLatin1Literal("issue_256_wrong.vit")) + QLatin1String("issue_256_wrong.vit")) << false << V_EX_NOINPUT; QTest::newRow("Issue #256. Correct standard measurements.")<< "issue_256.val" << QString("--test;;-m;;%1").arg(tmp + QDir::separator() + - QLatin1Literal("issue_256_correct.vst")) + QLatin1String("issue_256_correct.vst")) << true << V_EX_OK; QTest::newRow("Issue #256. Wrong standard measurements.")<< "issue_256.val" << QString("--test;;-m;;%1").arg(tmp + QDir::separator() + - QLatin1Literal("issue_256_wrong.vst")) + QLatin1String("issue_256_wrong.vst")) << false << V_EX_NOINPUT; @@ -254,7 +254,7 @@ void TST_ValentinaCommandLine::TestOpenCollection_data() const QTest::addColumn("exitCode"); const QString tmp = QApplication::applicationDirPath() + QDir::separator() + tmpTestCollectionFolder; - const QString testGOST = QString("--test;;-m;;%1").arg(tmp + QDir::separator() + QLatin1Literal("GOST_man_ru.vst")); + const QString testGOST = QString("--test;;-m;;%1").arg(tmp + QDir::separator() + QLatin1String("GOST_man_ru.vst")); const QString keyTest = QStringLiteral("--test"); QTest::newRow("bra") << "bra.val" << keyTest << true << V_EX_OK; From 19387cc80ef2c171f2675bd345c266e5d1f5a6eb Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Jul 2016 11:48:09 +0300 Subject: [PATCH 40/69] Resolved issue #528. Error: QSslSocket: cannot resolve SSLv2_client_method. --HG-- branch : develop --- src/libs/vmisc/vabstractapplication.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libs/vmisc/vabstractapplication.cpp b/src/libs/vmisc/vabstractapplication.cpp index 4304f7761..c8e7ea71f 100644 --- a/src/libs/vmisc/vabstractapplication.cpp +++ b/src/libs/vmisc/vabstractapplication.cpp @@ -79,6 +79,12 @@ VAbstractApplication::VAbstractApplication(int &argc, char **argv) // Connect this slot with VApplication::aboutToQuit. Settings()->sync(); }); + +#if !defined(V_NO_ASSERT) + // Ignore SSL-related warnings + // See issue #528: Error: QSslSocket: cannot resolve SSLv2_client_method. + qputenv("QT_LOGGING_RULES", "qt.network.ssl.warning=false"); +#endif //!defined(V_NO_ASSERT) } //--------------------------------------------------------------------------------------------------------------------- From 9375e0319d22b493495fdcaa104d9c0218fb35e2 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Jul 2016 15:40:33 +0300 Subject: [PATCH 41/69] As part of testing make all compiler warnings treat as errors. Added new CONFIG option "checkWarnings". --HG-- branch : develop --- src/app/tape/tape.pro | 45 ++------------- src/app/tape/warnings.pri | 54 ++++++++++++++++++ src/app/valentina/valentina.pro | 50 ++-------------- src/app/valentina/warnings.pri | 57 +++++++++++++++++++ src/libs/fervor/fervor.pro | 36 ++---------- src/libs/fervor/warnings.pri | 45 +++++++++++++++ src/libs/ifc/ifc.pro | 42 ++------------ src/libs/ifc/warnings.pri | 51 +++++++++++++++++ src/libs/qmuparser/qmuparser.pro | 33 ++--------- src/libs/qmuparser/warnings.pri | 42 ++++++++++++++ src/libs/vdxf/vdxf.pro | 33 ++--------- src/libs/vdxf/warnings.pri | 42 ++++++++++++++ src/libs/vformat/vformat.pro | 33 ++--------- src/libs/vformat/warnings.pri | 42 ++++++++++++++ src/libs/vgeometry/vgeometry.pro | 33 ++--------- src/libs/vgeometry/warnings.pri | 42 ++++++++++++++ src/libs/vlayout/vlayout.pro | 47 ++------------- src/libs/vlayout/warnings.pri | 56 ++++++++++++++++++ src/libs/vmisc/vmisc.pro | 38 ++----------- src/libs/vmisc/warnings.pri | 47 +++++++++++++++ src/libs/vobj/vobj.pro | 33 ++--------- src/libs/vobj/warnings.pri | 42 ++++++++++++++ src/libs/vpatterndb/vpatterndb.pro | 33 ++--------- src/libs/vpatterndb/warnings.pri | 42 ++++++++++++++ .../vpropertyexplorer/vpropertyexplorer.pro | 44 ++------------ src/libs/vpropertyexplorer/warnings.pri | 52 +++++++++++++++++ src/libs/vtools/vtools.pro | 41 ++----------- src/libs/vtools/warnings.pri | 50 ++++++++++++++++ src/libs/vwidgets/vwidgets.pro | 38 ++----------- src/libs/vwidgets/warnings.pri | 47 +++++++++++++++ src/test/ParserTest/ParserTest.pro | 33 ++--------- src/test/ParserTest/warnings.pri | 42 ++++++++++++++ src/test/ValentinaTest/ValentinaTest.pro | 40 ++----------- src/test/ValentinaTest/warnings.pri | 49 ++++++++++++++++ 34 files changed, 888 insertions(+), 566 deletions(-) create mode 100644 src/app/tape/warnings.pri create mode 100644 src/app/valentina/warnings.pri create mode 100644 src/libs/fervor/warnings.pri create mode 100644 src/libs/ifc/warnings.pri create mode 100644 src/libs/qmuparser/warnings.pri create mode 100644 src/libs/vdxf/warnings.pri create mode 100644 src/libs/vformat/warnings.pri create mode 100644 src/libs/vgeometry/warnings.pri create mode 100644 src/libs/vlayout/warnings.pri create mode 100644 src/libs/vmisc/warnings.pri create mode 100644 src/libs/vobj/warnings.pri create mode 100644 src/libs/vpatterndb/warnings.pri create mode 100644 src/libs/vpropertyexplorer/warnings.pri create mode 100644 src/libs/vtools/warnings.pri create mode 100644 src/libs/vwidgets/warnings.pri create mode 100644 src/test/ParserTest/warnings.pri create mode 100644 src/test/ValentinaTest/warnings.pri diff --git a/src/app/tape/tape.pro b/src/app/tape/tape.pro index 75325edc0..cbe7f04af 100644 --- a/src/app/tape/tape.pro +++ b/src/app/tape/tape.pro @@ -257,46 +257,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wundefined-reinterpret-cast \ - -Wmissing-prototypes # rcc folder - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -311,6 +272,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols DEFINES += V_NO_DEBUG } else { diff --git a/src/app/tape/warnings.pri b/src/app/tape/warnings.pri new file mode 100644 index 000000000..9a4697481 --- /dev/null +++ b/src/app/tape/warnings.pri @@ -0,0 +1,54 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wundefined-reinterpret-cast \ + -Wmissing-prototypes # rcc folder +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/app/valentina/valentina.pro b/src/app/valentina/valentina.pro index ede57e369..7c2a33e5c 100644 --- a/src/app/valentina/valentina.pro +++ b/src/app/valentina/valentina.pro @@ -67,52 +67,10 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - -isystem "$${OUT_PWD}/../../libs/vtools/$${UI_DIR}" \ # For VTools UI files - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - -isystem "$${OUT_PWD}/../../libs/vtools/$${UI_DIR}" \ # For VTools UI files - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wmissing-prototypes \ - -Wundefined-reinterpret-cast - } - *-icc-*{ - QMAKE_CXXFLAGS+= \ - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - -isystem "$${OUT_PWD}/../../libs/vtools/$${UI_DIR}" \ # For VTools UI files - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ - QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. } } @@ -128,6 +86,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols DEFINES += V_NO_DEBUG } else { diff --git a/src/app/valentina/warnings.pri b/src/app/valentina/warnings.pri new file mode 100644 index 000000000..2e87a116f --- /dev/null +++ b/src/app/valentina/warnings.pri @@ -0,0 +1,57 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + -isystem "$${OUT_PWD}/../../libs/vtools/$${UI_DIR}" \ # For VTools UI files + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + -isystem "$${OUT_PWD}/../../libs/vtools/$${UI_DIR}" \ # For VTools UI files + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wmissing-prototypes \ + -Wundefined-reinterpret-cast +} + +*-icc-*{ + QMAKE_CXXFLAGS+= \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + -isystem "$${OUT_PWD}/../../libs/vtools/$${UI_DIR}" \ # For VTools UI files + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/fervor/fervor.pro b/src/libs/fervor/fervor.pro index 7281ebb51..63eaae37e 100644 --- a/src/libs/fervor/fervor.pro +++ b/src/libs/fervor/fervor.pro @@ -48,37 +48,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -93,6 +63,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/fervor/warnings.pri b/src/libs/fervor/warnings.pri new file mode 100644 index 000000000..8bd738583 --- /dev/null +++ b/src/libs/fervor/warnings.pri @@ -0,0 +1,45 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/ifc/ifc.pro b/src/libs/ifc/ifc.pro index aa213c227..b115a0547 100644 --- a/src/libs/ifc/ifc.pro +++ b/src/libs/ifc/ifc.pro @@ -56,43 +56,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wmissing-prototypes \ - -Wundefined-reinterpret-cast - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -107,6 +71,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/ifc/warnings.pri b/src/libs/ifc/warnings.pri new file mode 100644 index 000000000..be993a88e --- /dev/null +++ b/src/libs/ifc/warnings.pri @@ -0,0 +1,51 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wmissing-prototypes \ + -Wundefined-reinterpret-cast +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/qmuparser/qmuparser.pro b/src/libs/qmuparser/qmuparser.pro index 026c57a4f..3982eeb7b 100644 --- a/src/libs/qmuparser/qmuparser.pro +++ b/src/libs/qmuparser/qmuparser.pro @@ -65,34 +65,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -107,6 +80,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noStripDebugSymbols { # do nothing } else { diff --git a/src/libs/qmuparser/warnings.pri b/src/libs/qmuparser/warnings.pri new file mode 100644 index 000000000..5e56557c8 --- /dev/null +++ b/src/libs/qmuparser/warnings.pri @@ -0,0 +1,42 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vdxf/vdxf.pro b/src/libs/vdxf/vdxf.pro index 7155fcaf7..311cf10bc 100644 --- a/src/libs/vdxf/vdxf.pro +++ b/src/libs/vdxf/vdxf.pro @@ -43,34 +43,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -85,6 +58,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/vdxf/warnings.pri b/src/libs/vdxf/warnings.pri new file mode 100644 index 000000000..5e56557c8 --- /dev/null +++ b/src/libs/vdxf/warnings.pri @@ -0,0 +1,42 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vformat/vformat.pro b/src/libs/vformat/vformat.pro index e75fc6c3d..3c62a9720 100644 --- a/src/libs/vformat/vformat.pro +++ b/src/libs/vformat/vformat.pro @@ -49,34 +49,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -91,6 +64,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/vformat/warnings.pri b/src/libs/vformat/warnings.pri new file mode 100644 index 000000000..5e56557c8 --- /dev/null +++ b/src/libs/vformat/warnings.pri @@ -0,0 +1,42 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vgeometry/vgeometry.pro b/src/libs/vgeometry/vgeometry.pro index 327e1d802..524c6379f 100644 --- a/src/libs/vgeometry/vgeometry.pro +++ b/src/libs/vgeometry/vgeometry.pro @@ -45,34 +45,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -87,6 +60,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/vgeometry/warnings.pri b/src/libs/vgeometry/warnings.pri new file mode 100644 index 000000000..5e56557c8 --- /dev/null +++ b/src/libs/vgeometry/warnings.pri @@ -0,0 +1,42 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vlayout/vlayout.pro b/src/libs/vlayout/vlayout.pro index 5380d9df3..0a77c8638 100644 --- a/src/libs/vlayout/vlayout.pro +++ b/src/libs/vlayout/vlayout.pro @@ -48,48 +48,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and - # want them in the global list. Compromise decision is to delete them from the local list. - QMAKE_CXXFLAGS -= \ - -Wlong-long \ - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wundefined-reinterpret-cast \ - -Wmissing-prototypes # rcc folder - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -104,6 +63,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + QMAKE_CXXFLAGS -= -O2 # Disable default optimization level QMAKE_CXXFLAGS += -O3 # For vlayout library enable speed optimizations diff --git a/src/libs/vlayout/warnings.pri b/src/libs/vlayout/warnings.pri new file mode 100644 index 000000000..a3e5bcdf5 --- /dev/null +++ b/src/libs/vlayout/warnings.pri @@ -0,0 +1,56 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and + # want them in the global list. Compromise decision is to delete them from the local list. + QMAKE_CXXFLAGS -= \ + -Wlong-long \ + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wundefined-reinterpret-cast \ + -Wmissing-prototypes # rcc folder +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vmisc/vmisc.pro b/src/libs/vmisc/vmisc.pro index df48dc12d..3f5ccb29b 100644 --- a/src/libs/vmisc/vmisc.pro +++ b/src/libs/vmisc/vmisc.pro @@ -51,39 +51,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wmissing-prototypes - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -102,6 +70,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/vmisc/warnings.pri b/src/libs/vmisc/warnings.pri new file mode 100644 index 000000000..e94434007 --- /dev/null +++ b/src/libs/vmisc/warnings.pri @@ -0,0 +1,47 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wmissing-prototypes +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vobj/vobj.pro b/src/libs/vobj/vobj.pro index 7008b2559..bee46b371 100644 --- a/src/libs/vobj/vobj.pro +++ b/src/libs/vobj/vobj.pro @@ -43,34 +43,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -85,6 +58,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/vobj/warnings.pri b/src/libs/vobj/warnings.pri new file mode 100644 index 000000000..5e56557c8 --- /dev/null +++ b/src/libs/vobj/warnings.pri @@ -0,0 +1,42 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vpatterndb/vpatterndb.pro b/src/libs/vpatterndb/vpatterndb.pro index 28d254840..9460a67d6 100644 --- a/src/libs/vpatterndb/vpatterndb.pro +++ b/src/libs/vpatterndb/vpatterndb.pro @@ -46,34 +46,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -88,6 +61,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/vpatterndb/warnings.pri b/src/libs/vpatterndb/warnings.pri new file mode 100644 index 000000000..5e56557c8 --- /dev/null +++ b/src/libs/vpatterndb/warnings.pri @@ -0,0 +1,42 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vpropertyexplorer/vpropertyexplorer.pro b/src/libs/vpropertyexplorer/vpropertyexplorer.pro index 36302808b..a5eff9e62 100644 --- a/src/libs/vpropertyexplorer/vpropertyexplorer.pro +++ b/src/libs/vpropertyexplorer/vpropertyexplorer.pro @@ -63,45 +63,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - # Key -isystem disable checking errors in system headers. - $$GCC_DEBUG_CXXFLAGS \ # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wswitch-default - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wundefined-reinterpret-cast - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. @@ -116,6 +78,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + !macx:!win32-msvc*{ noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing diff --git a/src/libs/vpropertyexplorer/warnings.pri b/src/libs/vpropertyexplorer/warnings.pri new file mode 100644 index 000000000..fcf8e2aeb --- /dev/null +++ b/src/libs/vpropertyexplorer/warnings.pri @@ -0,0 +1,52 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + # Key -isystem disable checking errors in system headers. + $$GCC_DEBUG_CXXFLAGS \ # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wswitch-default + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wundefined-reinterpret-cast +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vtools/vtools.pro b/src/libs/vtools/vtools.pro index fe30de8e8..0041fa51d 100644 --- a/src/libs/vtools/vtools.pro +++ b/src/libs/vtools/vtools.pro @@ -53,42 +53,7 @@ INCLUDEPATH += $$PWD/../vpatterndb CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ -# -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wundefined-reinterpret-cast - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -103,6 +68,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/vtools/warnings.pri b/src/libs/vtools/warnings.pri new file mode 100644 index 000000000..ac67d588c --- /dev/null +++ b/src/libs/vtools/warnings.pri @@ -0,0 +1,50 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ +# -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wundefined-reinterpret-cast +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/libs/vwidgets/vwidgets.pro b/src/libs/vwidgets/vwidgets.pro index 8eb426b73..8dd99831c 100644 --- a/src/libs/vwidgets/vwidgets.pro +++ b/src/libs/vwidgets/vwidgets.pro @@ -45,39 +45,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wundefined-reinterpret-cast - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -92,6 +60,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/libs/vwidgets/warnings.pri b/src/libs/vwidgets/warnings.pri new file mode 100644 index 000000000..9c68dfe1c --- /dev/null +++ b/src/libs/vwidgets/warnings.pri @@ -0,0 +1,47 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete these warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wundefined-reinterpret-cast +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/test/ParserTest/ParserTest.pro b/src/test/ParserTest/ParserTest.pro index bd360e7f6..0a7a88068 100644 --- a/src/test/ParserTest/ParserTest.pro +++ b/src/test/ParserTest/ParserTest.pro @@ -51,34 +51,7 @@ $$enable_ccache() CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. - - # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and - # want them in global list. Compromise decision delete them from local list. - QMAKE_CXXFLAGS -= \ - -Wmissing-prototypes - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -90,6 +63,10 @@ CONFIG(debug, debug|release){ !win32-msvc*:CONFIG += silent DEFINES += QT_NO_DEBUG_OUTPUT + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/test/ParserTest/warnings.pri b/src/test/ParserTest/warnings.pri new file mode 100644 index 000000000..9f37c06ac --- /dev/null +++ b/src/test/ParserTest/warnings.pri @@ -0,0 +1,42 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + $$CLANG_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + # -isystem key works only for headers. In some cases it's not enough. But we can't delete this warnings and + # want them in global list. Compromise decision delete them from local list. + QMAKE_CXXFLAGS -= \ + -Wmissing-prototypes +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} diff --git a/src/test/ValentinaTest/ValentinaTest.pro b/src/test/ValentinaTest/ValentinaTest.pro index 360fb8853..8c7272185 100644 --- a/src/test/ValentinaTest/ValentinaTest.pro +++ b/src/test/ValentinaTest/ValentinaTest.pro @@ -92,41 +92,7 @@ DEFINES += TS_DIR=\\\"$${PWD}/../../../share/translations\\\" CONFIG(debug, debug|release){ # Debug mode unix { - #Turn on compilers warnings. - *-g++{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. - - noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer - # do nothing - } else { - #gcc’s 4.8.0 Address Sanitizer - #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ - QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer - QMAKE_LFLAGS += -fsanitize=address - } - } - clang*{ - QMAKE_CXXFLAGS += \ - # Key -isystem disable checking errors in system headers. - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$CLANG_DEBUG_CXXFLAGS \ # See common.pri for more details. - -Wno-gnu-zero-variadic-macro-arguments\ # See macros QSKIP - } - *-icc-*{ - QMAKE_CXXFLAGS += \ - -isystem "$${OUT_PWD}/$${UI_DIR}" \ - -isystem "$${OUT_PWD}/$${MOC_DIR}" \ - -isystem "$${OUT_PWD}/$${RCC_DIR}" \ - $$ICC_DEBUG_CXXFLAGS - } + include(warnings.pri) } else { *-g++{ QMAKE_CXXFLAGS += $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. @@ -140,6 +106,10 @@ CONFIG(debug, debug|release){ QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll } + checkWarnings{ + unix:include(warnings.pri) + } + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols # do nothing } else { diff --git a/src/test/ValentinaTest/warnings.pri b/src/test/ValentinaTest/warnings.pri new file mode 100644 index 000000000..3d7b19eed --- /dev/null +++ b/src/test/ValentinaTest/warnings.pri @@ -0,0 +1,49 @@ +#Turn on compilers warnings. +*-g++{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$GCC_DEBUG_CXXFLAGS # See common.pri for more details. + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } + + noAddressSanitizer{ # For enable run qmake with CONFIG+=noAddressSanitizer + # do nothing + } else { + #gcc’s 4.8.0 Address Sanitizer + #http://blog.qt.digia.com/blog/2013/04/17/using-gccs-4-8-0-address-sanitizer-with-qt/ + QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_CFLAGS += -fsanitize=address -fno-omit-frame-pointer + QMAKE_LFLAGS += -fsanitize=address + } +} + +clang*{ + QMAKE_CXXFLAGS += \ + # Key -isystem disable checking errors in system headers. + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$CLANG_DEBUG_CXXFLAGS \ # See common.pri for more details. + -Wno-gnu-zero-variadic-macro-arguments\ # See macros QSKIP + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} + +*-icc-*{ + QMAKE_CXXFLAGS += \ + -isystem "$${OUT_PWD}/$${UI_DIR}" \ + -isystem "$${OUT_PWD}/$${MOC_DIR}" \ + -isystem "$${OUT_PWD}/$${RCC_DIR}" \ + $$ICC_DEBUG_CXXFLAGS + + checkWarnings{ # For enable run qmake with CONFIG+=checkWarnings + QMAKE_CXXFLAGS += -Werror + } +} From dbcea3a97908f60b304c3d513cade47705bedf5b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Jul 2016 18:58:21 +0300 Subject: [PATCH 42/69] GCC warnings. --HG-- branch : develop --- common.pri | 6 +++--- src/libs/vobj/predicates.cpp | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/common.pri b/common.pri index 43c450566..c96667d56 100644 --- a/common.pri +++ b/common.pri @@ -238,7 +238,7 @@ GCC_DEBUG_CXXFLAGS += \ -Wmissing-include-dirs \ -Wpacked \ -Wredundant-decls \ - -Winline \ +# -Winline \ -Winvalid-pch \ -Wunsafe-loop-optimizations \ -Wlong-long \ @@ -427,7 +427,7 @@ CLANG_DEBUG_CXXFLAGS += \ -Winherited-variadic-ctor \ -Winit-self \ -Winitializer-overrides \ - -Winline \ +# -Winline \ -Wint-conversion \ -Wint-conversions \ -Wint-to-pointer-cast \ @@ -641,7 +641,7 @@ ICC_DEBUG_CXXFLAGS += \ -Weffc++ \ -Wextra-tokens \ -Wformat \ - #-Winline \ +# -Winline \ -Wmain \ -Wmissing-declarations \ -Wmissing-prototypes \ diff --git a/src/libs/vobj/predicates.cpp b/src/libs/vobj/predicates.cpp index 0e08ed674..b46aa05a3 100644 --- a/src/libs/vobj/predicates.cpp +++ b/src/libs/vobj/predicates.cpp @@ -498,6 +498,10 @@ qreal estimate(int elen, qreal *e) return Q; } +#if defined(Q_CC_GNU) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" +#endif qreal incircleadapt(qreal *pa, qreal *pb, qreal *pc, qreal *pd, qreal permanent) { INEXACT qreal adx, bdx, cdx, ady, bdy, cdy; @@ -1031,6 +1035,9 @@ qreal incircleadapt(qreal *pa, qreal *pb, qreal *pc, qreal *pd, qreal permanent) return finnow[finlength - 1]; } +#if defined(Q_CC_GNU) + #pragma GCC diagnostic pop +#endif qreal incircle(qreal *pa, qreal *pb, qreal *pc, qreal *pd) { From 8d56b872dce230a571fac24ea33bc88788f30d78 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Wed, 20 Jul 2016 18:59:35 +0300 Subject: [PATCH 43/69] Refactoring method VDomDocument::SetAttribute(). --HG-- branch : develop --- src/libs/ifc/xml/vdomdocument.h | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/src/libs/ifc/xml/vdomdocument.h b/src/libs/ifc/xml/vdomdocument.h index 4972d7796..6c51cacee 100644 --- a/src/libs/ifc/xml/vdomdocument.h +++ b/src/libs/ifc/xml/vdomdocument.h @@ -139,9 +139,7 @@ template */ inline void VDomDocument::SetAttribute(QDomElement &domElement, const QString &name, const T &value) const { - QString val = QString().setNum(value); - val = val.replace(",", "."); - domElement.setAttribute(name, val); + domElement.setAttribute(name, QString().setNum(value).replace(QLatin1String(","), QLatin1String("."))); } //--------------------------------------------------------------------------------------------------------------------- @@ -156,16 +154,7 @@ inline void VDomDocument::SetAttribute(QDomElement &domElement, const Q template <> inline void VDomDocument::SetAttribute(QDomElement &domElement, const QString &name, const bool &value) const { - QString string; - if (value) - { - string = "true"; - } - else - { - string = "false"; - } - domElement.setAttribute(name, string); + domElement.setAttribute(name, value ? QStringLiteral("true") : QStringLiteral("false")); } //--------------------------------------------------------------------------------------------------------------------- @@ -173,14 +162,8 @@ template <> inline void VDomDocument::SetAttribute(QDomElement &domElement, const QString &name, const MeasurementsType &value) const { - if (value == MeasurementsType::Standard) - { - domElement.setAttribute(name, "standard"); - } - else - { - domElement.setAttribute(name, "individual"); - } + domElement.setAttribute(name, value == MeasurementsType::Standard ? QStringLiteral("standard") : + QStringLiteral("individual")); } #ifdef Q_CC_GNU From dfb8c387b69768c6ee900a0ded23fa3ca0c2b88b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 23 Jul 2016 12:54:00 +0300 Subject: [PATCH 44/69] Added checking which minimal OSX version supports current Qt version. From time to time Qt change minimal supported OS X version. This checking will help build Valentina on older Qt version without fixing .pro files. --HG-- branch : develop --- src/app/tape/tape.pro | 12 +++++++++++- src/app/valentina/valentina.pro | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/app/tape/tape.pro b/src/app/tape/tape.pro index cbe7f04af..8acecf751 100644 --- a/src/app/tape/tape.pro +++ b/src/app/tape/tape.pro @@ -200,7 +200,17 @@ unix{ # Some macx stuff QMAKE_MAC_SDK = macosx - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7 + # Check which minimal OSX version supports current Qt version + equals(QT_MAJOR_VERSION, 5):greaterThan(QT_MINOR_VERSION, 6) { + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.8 + } else { + equals(QT_MAJOR_VERSION, 5):greaterThan(QT_MINOR_VERSION, 3) { + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7 + } else { + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 + } + } + # Path to resources in app bundle #RESOURCES_DIR = "Contents/Resources" defined in translation.pri FRAMEWORKS_DIR = "Contents/Frameworks" diff --git a/src/app/valentina/valentina.pro b/src/app/valentina/valentina.pro index 7c2a33e5c..79d7dc143 100644 --- a/src/app/valentina/valentina.pro +++ b/src/app/valentina/valentina.pro @@ -214,7 +214,17 @@ unix{ # Some macx stuff QMAKE_MAC_SDK = macosx - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7 + # Check which minimal OSX version supports current Qt version + equals(QT_MAJOR_VERSION, 5):greaterThan(QT_MINOR_VERSION, 6) { + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.8 + } else { + equals(QT_MAJOR_VERSION, 5):greaterThan(QT_MINOR_VERSION, 3) { + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7 + } else { + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 + } + } + # Path to resources in app bundle #RESOURCES_DIR = "Contents/Resources" defined in translation.pri FRAMEWORKS_DIR = "Contents/Frameworks" From 524419e53f9aaf3404d31d7ecaddc72513116a41 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 23 Jul 2016 12:56:22 +0300 Subject: [PATCH 45/69] Fixed build on OS X. --HG-- branch : develop --- src/app/tape/tmainwindow.cpp | 13 +++++++----- src/app/tape/tmainwindow.h | 1 + src/app/valentina/mainwindow.cpp | 34 +++++++++++++++++++++----------- src/app/valentina/mainwindow.h | 2 ++ 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/src/app/tape/tmainwindow.cpp b/src/app/tape/tmainwindow.cpp index ca3e7feb5..1a632e3be 100644 --- a/src/app/tape/tmainwindow.cpp +++ b/src/app/tape/tmainwindow.cpp @@ -462,6 +462,13 @@ void TMainWindow::CreateFromExisting() } } +//--------------------------------------------------------------------------------------------------------------------- +void TMainWindow::Preferences() +{ + TapeConfigDialog dlg(this); + dlg.exec(); +} + //--------------------------------------------------------------------------------------------------------------------- void TMainWindow::closeEvent(QCloseEvent *event) { @@ -1734,11 +1741,7 @@ void TMainWindow::SetupMenu() connect(ui->actionExportToCSV, &QAction::triggered, this, &TMainWindow::ExportToCSV); connect(ui->actionReadOnly, &QAction::triggered, this, &TMainWindow::ReadOnly); - connect(ui->actionPreferences, &QAction::triggered, [this]() - { - TapeConfigDialog dlg(this); - dlg.exec(); - }); + connect(ui->actionPreferences, &QAction::triggered, this, &TMainWindow::Preferences); for (int i = 0; i < MaxRecentFiles; ++i) { diff --git a/src/app/tape/tmainwindow.h b/src/app/tape/tmainwindow.h index 80683d98f..c9a5eb8ae 100644 --- a/src/app/tape/tmainwindow.h +++ b/src/app/tape/tmainwindow.h @@ -75,6 +75,7 @@ private slots: void OpenStandard(); void OpenTemplate(); void CreateFromExisting(); + void Preferences(); void FileSave(); void FileSaveAs(); diff --git a/src/app/valentina/mainwindow.cpp b/src/app/valentina/mainwindow.cpp index 03e8cbb00..dcae0ecf1 100644 --- a/src/app/valentina/mainwindow.cpp +++ b/src/app/valentina/mainwindow.cpp @@ -3553,18 +3553,7 @@ void MainWindow::CreateActions() connect(ui->actionExit, &QAction::triggered, this, &MainWindow::close); - connect(ui->actionPreferences, &QAction::triggered, [this]() - { - ConfigDialog dlg(this); - connect(&dlg, &ConfigDialog::UpdateProperties, this, &MainWindow::WindowsLocale); // Must be first - connect(&dlg, &ConfigDialog::UpdateProperties, toolOptions, &VToolOptionsPropertyBrowser::RefreshOptions); - connect(&dlg, &ConfigDialog::UpdateProperties, this, &MainWindow::ToolBarStyles); - if (dlg.exec() == QDialog::Accepted) - { - InitAutoSave(); - } - }); - + connect(ui->actionPreferences, &QAction::triggered, this, &MainWindow::Preferences); connect(ui->actionReportBug, &QAction::triggered, [this]() { qCDebug(vMainWindow, "Reporting bug"); @@ -3954,6 +3943,27 @@ void MainWindow::ShowPaper(int index) ui->view->fitInView(ui->view->scene()->sceneRect(), Qt::KeepAspectRatio); } +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::Preferences() +{ + ConfigDialog dlg(this); + connect(&dlg, &ConfigDialog::UpdateProperties, this, &MainWindow::WindowsLocale); // Must be first + connect(&dlg, &ConfigDialog::UpdateProperties, toolOptions, &VToolOptionsPropertyBrowser::RefreshOptions); + connect(&dlg, &ConfigDialog::UpdateProperties, this, &MainWindow::ToolBarStyles); + if (dlg.exec() == QDialog::Accepted) + { + InitAutoSave(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void MainWindow::CreateMeasurements() +{ + const QString tape = qApp->TapeFilePath(); + const QString workingDirectory = QFileInfo(tape).absoluteDir().absolutePath(); + QProcess::startDetached(tape, QStringList(), workingDirectory); +} + //--------------------------------------------------------------------------------------------------------------------- void MainWindow::ToolBarStyle(QToolBar *bar) { diff --git a/src/app/valentina/mainwindow.h b/src/app/valentina/mainwindow.h index 11bf1f229..581159fae 100644 --- a/src/app/valentina/mainwindow.h +++ b/src/app/valentina/mainwindow.h @@ -111,6 +111,8 @@ private slots: void WindowsLocale(); void ToolBarStyles(); void ShowPaper(int index); + void Preferences(); + void CreateMeasurements(); void ArrowTool(); void ToolEndLine(bool checked); From 5da965ba69a02abbf1e00d15ede8d452f95059e0 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sat, 23 Jul 2016 14:48:16 +0300 Subject: [PATCH 46/69] After update to Qt 5.7 custom libraries: qmuparser and vpropertybrpwser lost "@rpath" prefix. Setting QMAKE_SONAME_PREFIX fix it. --HG-- branch : develop --- src/libs/qmuparser/qmuparser.pro | 3 +++ src/libs/vpropertyexplorer/vpropertyexplorer.pro | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/libs/qmuparser/qmuparser.pro b/src/libs/qmuparser/qmuparser.pro index 3982eeb7b..154b90fea 100644 --- a/src/libs/qmuparser/qmuparser.pro +++ b/src/libs/qmuparser/qmuparser.pro @@ -41,6 +41,9 @@ include(qmuparser.pri) VERSION = 2.4.1 +# Allow MAC OS X to find library inside a bundle +macx:QMAKE_SONAME_PREFIX = @rpath + # Set "make install" command for Unix-like systems. unix:!macx{ isEmpty(PREFIX_LIB){ diff --git a/src/libs/vpropertyexplorer/vpropertyexplorer.pro b/src/libs/vpropertyexplorer/vpropertyexplorer.pro index a5eff9e62..2af77b837 100644 --- a/src/libs/vpropertyexplorer/vpropertyexplorer.pro +++ b/src/libs/vpropertyexplorer/vpropertyexplorer.pro @@ -37,6 +37,9 @@ MOC_DIR = moc # objecs files OBJECTS_DIR = obj +# Allow MAC OS X to find library inside a bundle +macx:QMAKE_SONAME_PREFIX = @rpath + include(vpropertyexplorer.pri) # Set "make install" command for Unix-like systems. From 707d2a805eb6e2641908331c34e37c35925dedd4 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 09:26:35 +0000 Subject: [PATCH 47/69] bitbucket-pipelines.yml created online with Bitbucket --HG-- branch : develop --- bitbucket-pipelines.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 bitbucket-pipelines.yml diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml new file mode 100644 index 000000000..e97035636 --- /dev/null +++ b/bitbucket-pipelines.yml @@ -0,0 +1,21 @@ +image: gcc +pipelines: + default: + - step: + script: + - echo "This script runs on all branches that don't have any specific pipeline assigned in 'branches'." + branches: + develop: + - step: + script: + - lsb_release -a + - uname -a + - grep -i processor /proc/cpuinfo | wc -l + - gcc --version + - mkdir build + - cd build + - which qmake + - qmake --version + - qmake ../Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=no_ccache CONFIG+=checkWarnings + - make + - make check \ No newline at end of file From 25d42004d11dc8bdd92d3f1b015f5162ead13e8b Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 09:32:08 +0000 Subject: [PATCH 48/69] Try to fix bitbucket-pipelines.yml --HG-- branch : develop --- bitbucket-pipelines.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index e97035636..2af04c508 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -8,7 +8,6 @@ pipelines: develop: - step: script: - - lsb_release -a - uname -a - grep -i processor /proc/cpuinfo | wc -l - gcc --version From 952bd66dae5059c432f4c8517701bf907abc62b5 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 09:43:17 +0000 Subject: [PATCH 49/69] bitbucket-pipelines.yml, removed "which qmake". --HG-- branch : develop --- bitbucket-pipelines.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 2af04c508..8c8e21f5b 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -13,7 +13,6 @@ pipelines: - gcc --version - mkdir build - cd build - - which qmake - qmake --version - qmake ../Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=no_ccache CONFIG+=checkWarnings - make From d4c1d348f9685c4d3808f55d9813485a49546e50 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 10:07:28 +0000 Subject: [PATCH 50/69] Try to use default image. --HG-- branch : develop --- bitbucket-pipelines.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 8c8e21f5b..947be7081 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -1,4 +1,3 @@ -image: gcc pipelines: default: - step: @@ -8,6 +7,7 @@ pipelines: develop: - step: script: + - cat /etc/*-release - uname -a - grep -i processor /proc/cpuinfo | wc -l - gcc --version @@ -15,5 +15,5 @@ pipelines: - cd build - qmake --version - qmake ../Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=no_ccache CONFIG+=checkWarnings - - make + - make -j4 - make check \ No newline at end of file From f4cb03345919db96d506ee42e0daad066ba640ff Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 10:50:22 +0000 Subject: [PATCH 51/69] Looks like we can use apt-get inside bitbucket-pipelines.yml. --HG-- branch : develop --- bitbucket-pipelines.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 947be7081..2e1ed2d38 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -1,3 +1,4 @@ +image: gcc pipelines: default: - step: @@ -11,6 +12,8 @@ pipelines: - uname -a - grep -i processor /proc/cpuinfo | wc -l - gcc --version + - apt-get update # required to install qt + - apt-get install -y qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf - mkdir build - cd build - qmake --version From cd8297e157cb10836d7bbefc649ab3eea9ff2fc3 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 11:15:24 +0000 Subject: [PATCH 52/69] bitbucket-pipelines.yml. Added export LD_LIBRARY_PATH --HG-- branch : develop --- bitbucket-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 2e1ed2d38..c2ba2703e 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -19,4 +19,5 @@ pipelines: - qmake --version - qmake ../Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=no_ccache CONFIG+=checkWarnings - make -j4 + - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/opt/atlassian/bitbucketci/agent/build/build/src/libs/vpropertyexplorer/bin:/opt/atlassian/bitbucketci/agent/build/build/src/libs/qmuparser/bin" - make check \ No newline at end of file From 1eb97800f4ec543d3d8de5f2fb5dd202b4f93189 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 11:31:38 +0000 Subject: [PATCH 53/69] bitbucket-pipelines.yml. Used $(nproc). --HG-- branch : develop --- bitbucket-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index c2ba2703e..7f843168e 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -18,6 +18,6 @@ pipelines: - cd build - qmake --version - qmake ../Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=no_ccache CONFIG+=checkWarnings - - make -j4 + - make -j$(nproc) - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/opt/atlassian/bitbucketci/agent/build/build/src/libs/vpropertyexplorer/bin:/opt/atlassian/bitbucketci/agent/build/build/src/libs/qmuparser/bin" - make check \ No newline at end of file From 1551ee4f71a638deee89a327e309595f7b41fde8 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 11:34:36 +0000 Subject: [PATCH 54/69] bitbucket-pipelines.yml. Fixing error: QXcbConnection: Could not connect to display. --HG-- branch : develop --- bitbucket-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 7f843168e..e5955a409 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -20,4 +20,4 @@ pipelines: - qmake ../Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=no_ccache CONFIG+=checkWarnings - make -j$(nproc) - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/opt/atlassian/bitbucketci/agent/build/build/src/libs/vpropertyexplorer/bin:/opt/atlassian/bitbucketci/agent/build/build/src/libs/qmuparser/bin" - - make check \ No newline at end of file + - DISPLAY=:99.0 make check \ No newline at end of file From 0b86fac946addc77006c03389331f54258387d88 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 11:35:41 +0000 Subject: [PATCH 55/69] bitbucket-pipelines.yml. QTestLib require GUI support for some tests. --HG-- branch : develop --- bitbucket-pipelines.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index e5955a409..b564e1755 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -14,6 +14,9 @@ pipelines: - gcc --version - apt-get update # required to install qt - apt-get install -y qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf + # QTestLib require GUI support for some tests + - "export DISPLAY=:99.0" + - "sh -e /etc/init.d/xvfb start" - mkdir build - cd build - qmake --version From b4c22a00967db142acf400a93dbbe0b151c44226 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 12:04:13 +0000 Subject: [PATCH 56/69] bitbucket-pipelines.yml. Probably we already have root rights. --HG-- branch : develop --- bitbucket-pipelines.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index b564e1755..e600333b8 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -15,8 +15,8 @@ pipelines: - apt-get update # required to install qt - apt-get install -y qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf # QTestLib require GUI support for some tests - - "export DISPLAY=:99.0" - - "sh -e /etc/init.d/xvfb start" + - export DISPLAY=:99.0 + - /etc/init.d/xvfb start - mkdir build - cd build - qmake --version From 3476e071cdc0014f5da0530b7b6816ed79de70f9 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 12:12:09 +0000 Subject: [PATCH 57/69] bitbucket-pipelines.yml. My last hope is "xvfb-run". --HG-- branch : develop --- bitbucket-pipelines.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index e600333b8..d84bf0cc6 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -14,13 +14,11 @@ pipelines: - gcc --version - apt-get update # required to install qt - apt-get install -y qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf - # QTestLib require GUI support for some tests - - export DISPLAY=:99.0 - - /etc/init.d/xvfb start - mkdir build - cd build - qmake --version - qmake ../Valentina.pro -r CONFIG+=noDebugSymbols CONFIG+=no_ccache CONFIG+=checkWarnings - make -j$(nproc) - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/opt/atlassian/bitbucketci/agent/build/build/src/libs/vpropertyexplorer/bin:/opt/atlassian/bitbucketci/agent/build/build/src/libs/qmuparser/bin" - - DISPLAY=:99.0 make check \ No newline at end of file + # QTestLib require GUI support for some tests + - xvfb-run -a make check \ No newline at end of file From 14376c4fe1c1b0797a35860f91868007312bcefc Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 12:28:13 +0000 Subject: [PATCH 58/69] bitbucket-pipelines.yml. Error: xvfb-run: command not found. --HG-- branch : develop --- bitbucket-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index d84bf0cc6..280d44d27 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -13,7 +13,7 @@ pipelines: - grep -i processor /proc/cpuinfo | wc -l - gcc --version - apt-get update # required to install qt - - apt-get install -y qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf + - apt-get install -y xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf - mkdir build - cd build - qmake --version From 439b1577f557606050d50e5d1a47dc8c91f68edf Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 18:22:42 +0300 Subject: [PATCH 59/69] Disable warning Wunsafe-loop-optimizations. --HG-- branch : develop --- common.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common.pri b/common.pri index c96667d56..e7cc828b0 100644 --- a/common.pri +++ b/common.pri @@ -240,7 +240,7 @@ GCC_DEBUG_CXXFLAGS += \ -Wredundant-decls \ # -Winline \ -Winvalid-pch \ - -Wunsafe-loop-optimizations \ +# -Wunsafe-loop-optimizations \ -Wlong-long \ -Wmissing-format-attribute \ -Wswitch-default \ From c793f869e56b0636913b77f4645570c822cf916a Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 18:25:13 +0300 Subject: [PATCH 60/69] More warnings in AbstractTest::CopyRecursively. Do copy files before all test run. --HG-- branch : develop --- src/test/ValentinaTest/abstracttest.cpp | 5 ++++- src/test/ValentinaTest/tst_tapecommandline.cpp | 4 ++-- src/test/ValentinaTest/tst_tapecommandline.h | 4 ++-- src/test/ValentinaTest/tst_valentinacommandline.cpp | 4 ++-- src/test/ValentinaTest/tst_valentinacommandline.h | 4 ++-- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/test/ValentinaTest/abstracttest.cpp b/src/test/ValentinaTest/abstracttest.cpp index aca37f533..c671f4d9f 100644 --- a/src/test/ValentinaTest/abstracttest.cpp +++ b/src/test/ValentinaTest/abstracttest.cpp @@ -140,6 +140,7 @@ bool AbstractTest::CopyRecursively(const QString &srcFilePath, const QString &tg targetDir.cdUp(); if (not targetDir.mkdir(QFileInfo(tgtFilePath).fileName())) { + QWARN("Can't create subdir./n"); return false; } QDir sourceDir(srcFilePath); @@ -154,10 +155,12 @@ bool AbstractTest::CopyRecursively(const QString &srcFilePath, const QString &tg return false; } } - } else + } + else { if (not QFile::copy(srcFilePath, tgtFilePath)) { + QWARN("Can't copy file./n"); return false; } } diff --git a/src/test/ValentinaTest/tst_tapecommandline.cpp b/src/test/ValentinaTest/tst_tapecommandline.cpp index f4842fb39..1e9f7728c 100644 --- a/src/test/ValentinaTest/tst_tapecommandline.cpp +++ b/src/test/ValentinaTest/tst_tapecommandline.cpp @@ -40,7 +40,7 @@ TST_TapeCommandLine::TST_TapeCommandLine(QObject *parent) } //--------------------------------------------------------------------------------------------------------------------- -void TST_TapeCommandLine::init() +void TST_TapeCommandLine::initTestCase() { QDir tmpDir(tmpTestFolder); if (not tmpDir.removeRecursively()) @@ -141,7 +141,7 @@ void TST_TapeCommandLine::OpenMeasurements() } //--------------------------------------------------------------------------------------------------------------------- -void TST_TapeCommandLine::cleanup() +void TST_TapeCommandLine::cleanupTestCase() { QDir tmpDir(tmpTestFolder); if (not tmpDir.removeRecursively()) diff --git a/src/test/ValentinaTest/tst_tapecommandline.h b/src/test/ValentinaTest/tst_tapecommandline.h index 0206497e4..2cc434706 100644 --- a/src/test/ValentinaTest/tst_tapecommandline.h +++ b/src/test/ValentinaTest/tst_tapecommandline.h @@ -38,10 +38,10 @@ public: explicit TST_TapeCommandLine(QObject *parent = nullptr); private slots: - void init(); + void initTestCase(); void OpenMeasurements_data() const; void OpenMeasurements(); - void cleanup(); + void cleanupTestCase(); private: Q_DISABLE_COPY(TST_TapeCommandLine) diff --git a/src/test/ValentinaTest/tst_valentinacommandline.cpp b/src/test/ValentinaTest/tst_valentinacommandline.cpp index b1885dd11..2319118a7 100644 --- a/src/test/ValentinaTest/tst_valentinacommandline.cpp +++ b/src/test/ValentinaTest/tst_valentinacommandline.cpp @@ -41,7 +41,7 @@ TST_ValentinaCommandLine::TST_ValentinaCommandLine(QObject *parent) //--------------------------------------------------------------------------------------------------------------------- // cppcheck-suppress unusedFunction -void TST_ValentinaCommandLine::init() +void TST_ValentinaCommandLine::initTestCase() { {// Test files QDir tmpDir(tmpTestFolder); @@ -308,7 +308,7 @@ void TST_ValentinaCommandLine::TestOpenCollection() //--------------------------------------------------------------------------------------------------------------------- // cppcheck-suppress unusedFunction -void TST_ValentinaCommandLine::cleanup() +void TST_ValentinaCommandLine::cleanupTestCase() { { QDir tmpDir(tmpTestFolder); diff --git a/src/test/ValentinaTest/tst_valentinacommandline.h b/src/test/ValentinaTest/tst_valentinacommandline.h index 92c3db54a..53c0cb034 100644 --- a/src/test/ValentinaTest/tst_valentinacommandline.h +++ b/src/test/ValentinaTest/tst_valentinacommandline.h @@ -38,7 +38,7 @@ public: explicit TST_ValentinaCommandLine(QObject *parent = nullptr); private slots: - void init(); + void initTestCase(); void OpenPatterns_data() const; void OpenPatterns(); void ExportMode_data() const; @@ -47,7 +47,7 @@ private slots: void TestMode(); void TestOpenCollection_data() const; void TestOpenCollection(); - void cleanup(); + void cleanupTestCase(); private: Q_DISABLE_COPY(TST_ValentinaCommandLine) From b5457867e5065a0b9be8d228860dadc69621e9ec Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 20:01:19 +0300 Subject: [PATCH 61/69] Try be more verbose when copy test files. --HG-- branch : develop --- src/test/ValentinaTest/abstracttest.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/test/ValentinaTest/abstracttest.cpp b/src/test/ValentinaTest/abstracttest.cpp index c671f4d9f..920b396a9 100644 --- a/src/test/ValentinaTest/abstracttest.cpp +++ b/src/test/ValentinaTest/abstracttest.cpp @@ -138,9 +138,11 @@ bool AbstractTest::CopyRecursively(const QString &srcFilePath, const QString &tg { QDir targetDir(tgtFilePath); targetDir.cdUp(); - if (not targetDir.mkdir(QFileInfo(tgtFilePath).fileName())) + const QString dirName = QFileInfo(tgtFilePath).fileName(); + if (not targetDir.mkdir(dirName)) { - QWARN("Can't create subdir./n"); + const QString msg = QString("Can't create dir '%1'.").arg(dirName); + QWARN(qUtf8Printable(msg)); return false; } QDir sourceDir(srcFilePath); @@ -158,9 +160,26 @@ bool AbstractTest::CopyRecursively(const QString &srcFilePath, const QString &tg } else { + if (QFileInfo(tgtFilePath).exists()) + { + const QString msg = QString("File '%1' exists.").arg(srcFilePath); + QWARN(qUtf8Printable(msg)); + + if (QFile::remove(tgtFilePath)) + { + QWARN("File successfully removed."); + } + else + { + QWARN("Can't remove file."); + return false; + } + } + if (not QFile::copy(srcFilePath, tgtFilePath)) { - QWARN("Can't copy file./n"); + const QString msg = QString("Can't copy file '%1' to '%2'.").arg(srcFilePath).arg(tgtFilePath); + QWARN(qUtf8Printable(msg)); return false; } } From 9e9e2a1455b20139f9c8dbfbc78bbcacf840e88d Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 21:55:23 +0300 Subject: [PATCH 62/69] Check which locale supports bitbucket pipelines. --HG-- branch : develop --- bitbucket-pipelines.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 280d44d27..208c15fea 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -8,6 +8,7 @@ pipelines: develop: - step: script: + - locale - cat /etc/*-release - uname -a - grep -i processor /proc/cpuinfo | wc -l @@ -21,4 +22,4 @@ pipelines: - make -j$(nproc) - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/opt/atlassian/bitbucketci/agent/build/build/src/libs/vpropertyexplorer/bin:/opt/atlassian/bitbucketci/agent/build/build/src/libs/qmuparser/bin" # QTestLib require GUI support for some tests - - xvfb-run -a make check \ No newline at end of file + - xvfb-run -a make check From 6124f2c3146d6c207c763a92a0eaf5d7933af830 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 22:23:28 +0300 Subject: [PATCH 63/69] Because bitbucket pipelines by default uses C locale we will try generate UTF-8 manually. --HG-- branch : develop --- bitbucket-pipelines.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 208c15fea..e380e5efc 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -9,6 +9,8 @@ pipelines: - step: script: - locale + - locale-gen "en_US.UTF-8" + - dpkg-reconfigure locales - cat /etc/*-release - uname -a - grep -i processor /proc/cpuinfo | wc -l From 1fc22502ac285b1912023083e0e10a3764dd5f2d Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 22:29:22 +0300 Subject: [PATCH 64/69] Can't change locale because no English language pack installed. --HG-- branch : develop --- bitbucket-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index e380e5efc..18974c3bf 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -16,7 +16,7 @@ pipelines: - grep -i processor /proc/cpuinfo | wc -l - gcc --version - apt-get update # required to install qt - - apt-get install -y xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf + - apt-get install -y language-pack-en xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf - mkdir build - cd build - qmake --version From 4e35551ff4ab27ea7b3a36279bbb20834b889d4e Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 22:37:29 +0300 Subject: [PATCH 65/69] Seems like "local-gen" is inside package "locales". --HG-- branch : develop --- bitbucket-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 18974c3bf..e26d90777 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -16,7 +16,7 @@ pipelines: - grep -i processor /proc/cpuinfo | wc -l - gcc --version - apt-get update # required to install qt - - apt-get install -y language-pack-en xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf + - apt-get install -y locales language-pack-en xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf - mkdir build - cd build - qmake --version From 1813a897e3647c39da64bd26b1ebbdfda3b616f7 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 23:06:10 +0300 Subject: [PATCH 66/69] Forgot that i call locale-gen before "apt-get install". --HG-- branch : develop --- bitbucket-pipelines.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index e26d90777..884276044 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -8,15 +8,15 @@ pipelines: develop: - step: script: - - locale - - locale-gen "en_US.UTF-8" - - dpkg-reconfigure locales - cat /etc/*-release - uname -a - grep -i processor /proc/cpuinfo | wc -l - gcc --version - apt-get update # required to install qt - apt-get install -y locales language-pack-en xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf + - locale + - locale-gen "en_US.UTF-8" + - dpkg-reconfigure locales - mkdir build - cd build - qmake --version From f34a3e54e428fc32cb3e45e75f324a1131be9d6f Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 23:18:29 +0300 Subject: [PATCH 67/69] Documentation says they use Ubuntu, but log says we work with Debian. And ssems like Debian doesn't provide package "language-pack-en". Let's try without it. --HG-- branch : develop --- bitbucket-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 884276044..f8beeef6b 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -13,7 +13,7 @@ pipelines: - grep -i processor /proc/cpuinfo | wc -l - gcc --version - apt-get update # required to install qt - - apt-get install -y locales language-pack-en xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf + - apt-get install -y locales xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf - locale - locale-gen "en_US.UTF-8" - dpkg-reconfigure locales From 2fbac845b5b86bb98c35ca3438477d249dd29d8e Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Mon, 25 Jul 2016 23:28:26 +0300 Subject: [PATCH 68/69] Looks like "dpkg-reconfigure locales" need some type of dialog with user. Replace with another approach. --HG-- branch : develop --- bitbucket-pipelines.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index f8beeef6b..02e21f4fd 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -15,8 +15,9 @@ pipelines: - apt-get update # required to install qt - apt-get install -y locales xvfb qtbase5-dev libqt5svg5-dev qt5-default qttools5-dev-tools libqt5xmlpatterns5-dev libqt5core5a libqt5gui5 libqt5printsupport5 libqt5svg5 libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 xpdf - locale + - echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen - locale-gen "en_US.UTF-8" - - dpkg-reconfigure locales + - update-locale LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 - mkdir build - cd build - qmake --version From 689024d60f4a7bdcf2d779a56dd0c163d3214454 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 26 Jul 2016 13:33:58 +0300 Subject: [PATCH 69/69] Resolved issue #530. Add debug messages for Layout creation errors. --HG-- branch : develop --- src/libs/vlayout/vbank.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/libs/vlayout/vbank.cpp b/src/libs/vlayout/vbank.cpp index 108c97a0b..53e402dc1 100644 --- a/src/libs/vlayout/vbank.cpp +++ b/src/libs/vlayout/vbank.cpp @@ -28,11 +28,28 @@ #include "vbank.h" #include "vlayoutdetail.h" +#include "../vmisc/logging.h" #include #include #include +#if defined(Q_CC_CLANG) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wmissing-prototypes" +#elif defined(Q_CC_INTEL) + #pragma warning( push ) + #pragma warning( disable: 1418 ) +#endif + +Q_LOGGING_CATEGORY(lBank, "layout.bank") + +#if defined(Q_CC_CLANG) + #pragma clang diagnostic pop +#elif defined(Q_CC_INTEL) + #pragma warning( pop ) +#endif + //--------------------------------------------------------------------------------------------------------------------- VBank::VBank() :details(QVector()), unsorted(QHash()), big(QHash()), @@ -158,12 +175,14 @@ bool VBank::Prepare() { if (layoutWidth <= 0) { + qCDebug(lBank, "Preparing data for layout error: Layout paper sheet <= 0"); prepare = false; return prepare; } if (details.isEmpty()) { + qCDebug(lBank, "Preparing data for layout error: List of details is empty"); prepare = false; return prepare; } @@ -183,6 +202,7 @@ bool VBank::Prepare() const qint64 square = details.at(i).Square(); if (square <= 0) { + qCDebug(lBank, "Preparing data for layout error: Detail squere <= 0"); prepare = false; return prepare; }