Salome HOME
Provide editing of parameters
[modules/shaper.git] / src / XGUI / XGUI_PartDataModel.cpp
index b1ec5e74521d67bb486d046c37af56c791d0faa1..5ab5798468bb0bd2c999ddb1bc255a94e696fcf7 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
+
 #include "XGUI_PartDataModel.h"
 #include "XGUI_Workshop.h"
 
 #include <ModelAPI_Object.h>
 #include <ModelAPI_ResultPart.h>
 #include <ModelAPI_ResultConstruction.h>
-#include <ModelAPI_ResultParameters.h>
+#include <ModelAPI_ResultParameter.h>
 #include <ModelAPI_ResultBody.h>
 #include <ModelAPI_ResultGroup.h>
+#include <ModelAPI_AttributeDouble.h>
 
 #include <QIcon>
 #include <QBrush>
@@ -44,9 +47,14 @@ QVariant XGUI_TopDataModel::data(const QModelIndex& theIndex, int theRole) const
           return tr("Parameters") + QString(" (%1)").arg(rowCount(theIndex));
         case ParamObject: {
           DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
-          ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultParameters::group(), theIndex.row());
-          if (aObject)
-            return aObject->data()->name().c_str();
+          ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultParameter::group(), theIndex.row());
+          if (aObject) {
+            ResultParameterPtr aParam = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aObject);
+            AttributeDoublePtr aValueAttribute = aParam->data()->real(ModelAPI_ResultParameter::VALUE());
+            QString aVal = QString::number(aValueAttribute->value());
+            QString aTitle = QString(aObject->data()->name().c_str());
+            return aTitle + "=" + aVal;
+          }
         }
           break;
         case ConstructFolder:
@@ -110,7 +118,7 @@ int XGUI_TopDataModel::rowCount(const QModelIndex& theParent) const
 
   DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
   if (theParent.internalId() == ParamsFolder)
-    return aRootDoc->size(ModelAPI_ResultParameters::group());
+    return aRootDoc->size(ModelAPI_ResultParameter::group());
 
   if (theParent.internalId() == ConstructFolder)
     return aRootDoc->size(ModelAPI_ResultConstruction::group());
@@ -181,7 +189,7 @@ ObjectPtr XGUI_TopDataModel::object(const QModelIndex& theIndex) const
       return ObjectPtr();
     case ParamObject: {
       DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
-      return aRootDoc->object(ModelAPI_ResultParameters::group(), theIndex.row());
+      return aRootDoc->object(ModelAPI_ResultParameter::group(), theIndex.row());
     }
     case ConstructObject: {
       DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
@@ -202,7 +210,7 @@ QModelIndex XGUI_TopDataModel::findParent(const ObjectPtr& theObject) const
 
 QModelIndex XGUI_TopDataModel::findGroup(const std::string& theGroup) const
 {
-  if (theGroup == ModelAPI_ResultParameters::group())
+  if (theGroup == ModelAPI_ResultParameter::group())
     return createIndex(0, 0, (qint32) ParamsFolder);
   if (theGroup == ModelAPI_ResultConstruction::group())
     return createIndex(1, 0, (qint32) ConstructFolder);
@@ -226,7 +234,7 @@ QModelIndex XGUI_TopDataModel::objectIndex(const ObjectPtr& theObject) const
       }
     }
     if (aRow != -1) {
-      if (aGroup == ModelAPI_ResultParameters::group())
+      if (aGroup == ModelAPI_ResultParameter::group())
         return createIndex(aRow, 0, (qint32) ParamObject);
       if (aGroup == ModelAPI_ResultConstruction::group())
         return createIndex(aRow, 0, (qint32) ConstructObject);
@@ -270,10 +278,15 @@ QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons
         case GroupsFolder:
           return tr("Groups") + QString(" (%1)").arg(rowCount(theIndex));
         case ParamObject: {
-          ObjectPtr aObject = partDocument()->object(ModelAPI_ResultParameters::group(),
+          ObjectPtr aObject = partDocument()->object(ModelAPI_ResultParameter::group(),
                                                      theIndex.row());
-          if (aObject)
-            return std::dynamic_pointer_cast<ModelAPI_Object>(aObject)->data()->name().c_str();
+          if (aObject) {
+            ResultParameterPtr aParam = std::dynamic_pointer_cast<ModelAPI_ResultParameter>(aObject);
+            AttributeDoublePtr aValueAttribute = aParam->data()->real(ModelAPI_ResultParameter::VALUE());
+            QString aVal = QString::number(aValueAttribute->value());
+            QString aTitle = QString(aObject->data()->name().c_str());
+            return aTitle + "=" + aVal;
+          }
         }
           break;
         case ConstructObject: {
@@ -367,7 +380,7 @@ int XGUI_PartDataModel::rowCount(const QModelIndex& parent) const
           return 0;
       }
     case ParamsFolder:
-      return partDocument()->size(ModelAPI_ResultParameters::group());
+      return partDocument()->size(ModelAPI_ResultParameter::group());
     case ConstructFolder:
       return partDocument()->size(ModelAPI_ResultConstruction::group());
     case BodiesFolder:
@@ -474,7 +487,7 @@ ObjectPtr XGUI_PartDataModel::object(const QModelIndex& theIndex) const
       return ObjectPtr();
 
     case ParamObject:
-      return partDocument()->object(ModelAPI_ResultParameters::group(), theIndex.row());
+      return partDocument()->object(ModelAPI_ResultParameter::group(), theIndex.row());
     case ConstructObject:
       return partDocument()->object(ModelAPI_ResultConstruction::group(), theIndex.row());
     case BodiesObject:
@@ -499,7 +512,7 @@ QModelIndex XGUI_PartDataModel::findParent(const ObjectPtr& theObject) const
 
 QModelIndex XGUI_PartDataModel::findGroup(const std::string& theGroup) const
 {
-  if (theGroup == ModelAPI_ResultParameters::group())
+  if (theGroup == ModelAPI_ResultParameter::group())
     return createIndex(0, 0, (qint32) ParamsFolder);
   if (theGroup == ModelAPI_ResultConstruction::group())
     return createIndex(1, 0, (qint32) ConstructFolder);
@@ -536,7 +549,7 @@ QModelIndex XGUI_PartDataModel::objectIndex(const ObjectPtr& theObject) const
     }
     if (aRow == -1)
       return aIndex;
-    if (aGroup == ModelAPI_ResultParameters::group())
+    if (aGroup == ModelAPI_ResultParameter::group())
       return createIndex(aRow, 0, (qint32) ParamObject);
     else if (aGroup == ModelAPI_ResultConstruction::group())
       return createIndex(aRow, 0, (qint32) ConstructObject);