+// 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>
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:
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());
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();
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);
}
}
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);
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: {
return aObject->data()->name().c_str();
}
case HistoryObject: {
- ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - 4);
+ ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - getRowsNumber());
if (aObject)
return aObject->data()->name().c_str();
}
std::string aGroup = theIndex.internalId() == ConstructObject ?
ModelAPI_ResultConstruction::group() : ModelAPI_ResultBody::group();
ObjectPtr anObject = partDocument()->object(aGroup, theIndex.row());
- if (anObject && anObject->data() && anObject->data()->mustBeUpdated()) {
+ if (anObject && anObject->data() &&
+ anObject->data()->execState() == ModelAPI_StateMustBeUpdated) {
return QIcon(":pictures/constr_object_modified.png");
}
return QIcon(":pictures/constr_object.png");
}
case HistoryObject: {
- ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - 4);
+ ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - getRowsNumber());
FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObject);
if (aFeature)
- return QIcon(XGUI_Workshop::featureIcon(aFeature->getKind()));
+ return XGUI_Workshop::featureIcon(aFeature);
}
}
break;
case MyRoot:
{
DocumentPtr aDoc = partDocument();
- if (aDoc)
- return 4 + aDoc->size(ModelAPI_Feature::group());
- else
+ if (aDoc) {
+ return getRowsNumber() + aDoc->size(ModelAPI_Feature::group());
+ } else
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:
case 2:
return createIndex(theRow, 0, (qint32) BodiesFolder);
case 3:
- return createIndex(theRow, 0, (qint32) GroupsFolder);
+ {
+ int aSize = partDocument()->size(ModelAPI_ResultGroup::group());
+ if (aSize > 0)
+ return createIndex(theRow, 0, (qint32) GroupsFolder);
+ else
+ return createIndex(theRow, theColumn, (qint32) HistoryObject);
+ }
default:
return createIndex(theRow, theColumn, (qint32) HistoryObject);
}
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:
case GroupObject:
return partDocument()->object(ModelAPI_ResultGroup::group(), theIndex.row());
case HistoryObject:
- return partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - 4);
+ return partDocument()->object(ModelAPI_Feature::group(), theIndex.row() - getRowsNumber());
}
return ObjectPtr();
}
QModelIndex XGUI_PartDataModel::findGroup(const std::string& theGroup) const
{
- if (theGroup.compare(ModelAPI_ResultParameters::group()) == 0)
+ if (theGroup == ModelAPI_ResultParameter::group())
return createIndex(0, 0, (qint32) ParamsFolder);
- if (theGroup.compare(ModelAPI_ResultConstruction::group()) == 0)
+ if (theGroup == ModelAPI_ResultConstruction::group())
return createIndex(1, 0, (qint32) ConstructFolder);
- if (theGroup.compare(ModelAPI_ResultBody::group()) == 0)
+ if (theGroup == ModelAPI_ResultBody::group())
return createIndex(2, 0, (qint32) BodiesFolder);
- if (theGroup.compare(ModelAPI_ResultGroup::group()) == 0)
+ if (theGroup == ModelAPI_ResultGroup::group())
return createIndex(3, 0, (qint32) GroupsFolder);
return QModelIndex();
}
}
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);
else if (aGroup == ModelAPI_ResultGroup::group())
return createIndex(aRow, 0, (qint32) GroupObject);
else
- return createIndex(aRow + 4, 0, (qint32) HistoryObject);
+ return createIndex(aRow + getRowsNumber(), 0, (qint32) HistoryObject);
}
return aIndex;
}
+
+
+int XGUI_PartDataModel::getRowsNumber() const
+{
+ int aSize = partDocument()->size(ModelAPI_ResultGroup::group());
+ if (aSize == 0) // If there are no groups then do not show group folder
+ return 3;
+ return 4;
+}
\ No newline at end of file