From e82f65fc6a83ccd64adcff1623e7c787ac183e1e Mon Sep 17 00:00:00 2001
From: BojanKverh <bojan.kverh@gmail.com>
Date: Sun, 23 Oct 2016 20:59:38 +0200
Subject: [PATCH] Fixed the grainline tab icon in details dialog

--HG--
branch : feature
---
 src/app/valentina/xml/vpattern.cpp               | 16 ++++++++++++----
 src/libs/vtools/dialogs/tools/dialogdetail.cpp   | 12 ++++++++++--
 src/libs/vtools/dialogs/tools/dialogdetail.h     |  1 +
 src/libs/vtools/tools/vtooldetail.cpp            |  3 +++
 .../vtools/undocommands/savedetailoptions.cpp    |  7 +++++--
 5 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp
index c6186ca16..02840d407 100644
--- a/src/app/valentina/xml/vpattern.cpp
+++ b/src/app/valentina/xml/vpattern.cpp
@@ -726,10 +726,18 @@ void VPattern::ParseDetailElement(const QDomElement &domElement, const Document
                     ptPos.setX(GetParametrDouble(element, AttrMx, "0"));
                     ptPos.setY(GetParametrDouble(element, AttrMy, "0"));
                     detail.GetGrainlineGeometry().SetPos(ptPos);
-                    QString qsLength = GetParametrString(element, AttrLength, "0");
-                    detail.GetGrainlineGeometry().SetLength(qsLength);
-                    QString qsRot = GetParametrString(element, VToolDetail::AttrRotation, "0");
-                    detail.GetGrainlineGeometry().SetRotation(qsRot);
+                    if (detail.GetGrainlineGeometry().IsVisible() == true)
+                    {
+                        QString qsLength = GetParametrString(element, AttrLength);
+                        detail.GetGrainlineGeometry().SetLength(qsLength);
+                        QString qsRot = GetParametrString(element, VToolDetail::AttrRotation);
+                        detail.GetGrainlineGeometry().SetRotation(qsRot);
+                    }
+                    else
+                    {
+                        detail.GetGrainlineGeometry().SetLength("");
+                        detail.GetGrainlineGeometry().SetRotation("");
+                    }
                 }
             }
         }
diff --git a/src/libs/vtools/dialogs/tools/dialogdetail.cpp b/src/libs/vtools/dialogs/tools/dialogdetail.cpp
index e82f2e704..1049cc744 100644
--- a/src/libs/vtools/dialogs/tools/dialogdetail.cpp
+++ b/src/libs/vtools/dialogs/tools/dialogdetail.cpp
@@ -903,8 +903,7 @@ void DialogDetail::UpdateValues()
     }
     else
     {
-        QIcon icon;
-        ui.tabWidget->setTabIcon(2, icon);
+        ResetWarning();
     }
 }
 
@@ -974,6 +973,7 @@ void DialogDetail::EnableGrainlineRotation()
         ChangeColor(ui.labelEditLen, okColor);
         ChangeColor(ui.labelEditRot, okColor);
         bOk->setEnabled(true);
+        ResetWarning();
     }
 }
 
@@ -1024,3 +1024,11 @@ void DialogDetail::DeployLength()
 }
 
 //---------------------------------------------------------------------------------------------------------------------
+void DialogDetail::ResetWarning()
+{
+    QIcon icon;
+    ui.tabWidget->setTabIcon(2, icon);
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+
diff --git a/src/libs/vtools/dialogs/tools/dialogdetail.h b/src/libs/vtools/dialogs/tools/dialogdetail.h
index c40cb37a6..cecc051d7 100644
--- a/src/libs/vtools/dialogs/tools/dialogdetail.h
+++ b/src/libs/vtools/dialogs/tools/dialogdetail.h
@@ -135,6 +135,7 @@ private slots:
     void             EditFormula();
     void             DeployRotation();
     void             DeployLength();
+    void             ResetWarning();
 };
 
 //---------------------------------------------------------------------------------------------------------------------
diff --git a/src/libs/vtools/tools/vtooldetail.cpp b/src/libs/vtools/tools/vtooldetail.cpp
index 7694f92cf..81a2be130 100644
--- a/src/libs/vtools/tools/vtooldetail.cpp
+++ b/src/libs/vtools/tools/vtooldetail.cpp
@@ -502,6 +502,7 @@ void VToolDetail::AddToFile()
     doc->SetAttribute(domData, AttrMy, glGeom.GetPos().y());
     doc->SetAttribute(domData, AttrLength, glGeom.GetLength());
     doc->SetAttribute(domData, AttrRotation, glGeom.GetRotation());
+    qDebug() << "XML ROTATION" << glGeom.GetRotation();
 
     // nodes
     for (int i = 0; i < detail.CountNode(); ++i)
@@ -580,6 +581,7 @@ void VToolDetail::RefreshDataInFile()
         doc->SetAttribute(domData, AttrMy, glGeom.GetPos().y());
         doc->SetAttribute(domData, AttrLength, glGeom.GetLength());
         doc->SetAttribute(domData, AttrRotation, glGeom.GetRotation());
+        qDebug() << "XML ROTATION2" << glGeom.GetRotation();
 
         // nodes
         for (int i = 0; i < det.CountNode(); ++i)
@@ -926,6 +928,7 @@ void VToolDetail::UpdateGrainline()
             QString qsFormula;
             qsFormula = geom.GetRotation().replace("\n", " ");
             qsFormula = qApp->TrVars()->FormulaFromUser(qsFormula, qApp->Settings()->GetOsSeparator());
+
             Calculator cal1;
             dRotation = cal1.EvalFormula(VDataTool::data.PlainVariables(), qsFormula);
 
diff --git a/src/libs/vtools/undocommands/savedetailoptions.cpp b/src/libs/vtools/undocommands/savedetailoptions.cpp
index 5cc0c525d..5cdf5d57a 100644
--- a/src/libs/vtools/undocommands/savedetailoptions.cpp
+++ b/src/libs/vtools/undocommands/savedetailoptions.cpp
@@ -208,8 +208,11 @@ void SaveDetailOptions::SaveGrainline(QDomElement &domElement, const VDetail &de
     doc->SetAttribute(domData, VAbstractPattern::AttrVisible, glGeom.IsVisible() == true? trueStr : falseStr);
     doc->SetAttribute(domData, AttrMx, glGeom.GetPos().x());
     doc->SetAttribute(domData, AttrMy, glGeom.GetPos().y());
-    doc->SetAttribute(domData, AttrLength, glGeom.GetLength());
-    doc->SetAttribute(domData, VToolDetail::AttrRotation, glGeom.GetRotation());
+    if (glGeom.IsVisible() == true)
+    {
+        doc->SetAttribute(domData, AttrLength, glGeom.GetLength());
+        doc->SetAttribute(domData, VToolDetail::AttrRotation, glGeom.GetRotation());
+    }
 
     domElement.appendChild(domData);
 }