Salome HOME
projects
/
modules
/
shaper.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Issue #389 Undo/redo problem on sketch line creation
[modules/shaper.git]
/
src
/
XGUI
/
XGUI_PartDataModel.cpp
diff --git
a/src/XGUI/XGUI_PartDataModel.cpp
b/src/XGUI/XGUI_PartDataModel.cpp
index 42d22cce9ed799b35889a657a8a086d5c7055677..567ad5677e050e0d4923001afdbc3a23f2a75709 100644
(file)
--- a/
src/XGUI/XGUI_PartDataModel.cpp
+++ b/
src/XGUI/XGUI_PartDataModel.cpp
@@
-1,3
+1,5
@@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
+
#include "XGUI_PartDataModel.h"
#include "XGUI_Workshop.h"
#include "XGUI_PartDataModel.h"
#include "XGUI_Workshop.h"
@@
-19,7
+21,7
@@
//ObjectPtr featureObj(const ObjectPtr& theFeature)
//{
//ObjectPtr featureObj(const ObjectPtr& theFeature)
//{
-// ObjectPtr aObject =
boost
::dynamic_pointer_cast<ModelAPI_Object>(theFeature);
+// ObjectPtr aObject =
std
::dynamic_pointer_cast<ModelAPI_Object>(theFeature);
// if (aObject)
// return aObject->featureRef();
// return theFeature;
// if (aObject)
// return aObject->featureRef();
// return theFeature;
@@
-259,7
+261,7
@@
QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons
DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultPart::group(), myId);
if (aObject)
DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultPart::group(), myId);
if (aObject)
- return
boost
::dynamic_pointer_cast<ModelAPI_Object>(aObject)->data()->name().c_str();
+ return
std
::dynamic_pointer_cast<ModelAPI_Object>(aObject)->data()->name().c_str();
}
case ParamsFolder:
return tr("Parameters") + QString(" (%1)").arg(rowCount(theIndex));
}
case ParamsFolder:
return tr("Parameters") + QString(" (%1)").arg(rowCount(theIndex));
@@
-273,14
+275,14
@@
QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons
ObjectPtr aObject = partDocument()->object(ModelAPI_ResultParameters::group(),
theIndex.row());
if (aObject)
ObjectPtr aObject = partDocument()->object(ModelAPI_ResultParameters::group(),
theIndex.row());
if (aObject)
- return
boost
::dynamic_pointer_cast<ModelAPI_Object>(aObject)->data()->name().c_str();
+ return
std
::dynamic_pointer_cast<ModelAPI_Object>(aObject)->data()->name().c_str();
}
break;
case ConstructObject: {
ObjectPtr aObject = partDocument()->object(ModelAPI_ResultConstruction::group(),
theIndex.row());
if (aObject)
}
break;
case ConstructObject: {
ObjectPtr aObject = partDocument()->object(ModelAPI_ResultConstruction::group(),
theIndex.row());
if (aObject)
- return
boost
::dynamic_pointer_cast<ModelAPI_Object>(aObject)->data()->name().c_str();
+ return
std
::dynamic_pointer_cast<ModelAPI_Object>(aObject)->data()->name().c_str();
}
break;
case BodiesObject: {
}
break;
case BodiesObject: {
@@
-295,7
+297,7
@@
QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons
return aObject->data()->name().c_str();
}
case HistoryObject: {
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();
}
if (aObject)
return aObject->data()->name().c_str();
}
@@
-319,16
+321,17
@@
QVariant XGUI_PartDataModel::data(const QModelIndex& theIndex, int theRole) cons
std::string aGroup = theIndex.internalId() == ConstructObject ?
ModelAPI_ResultConstruction::group() : ModelAPI_ResultBody::group();
ObjectPtr anObject = partDocument()->object(aGroup, theIndex.row());
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: {
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
);
- FeaturePtr aFeature =
boost
::dynamic_pointer_cast<ModelAPI_Feature>(aObject);
+ ObjectPtr aObject = partDocument()->object(ModelAPI_Feature::group(), theIndex.row() -
getRowsNumber()
);
+ FeaturePtr aFeature =
std
::dynamic_pointer_cast<ModelAPI_Feature>(aObject);
if (aFeature)
if (aFeature)
- return
QIcon(XGUI_Workshop::featureIcon(aFeature->getKind())
);
+ return
XGUI_Workshop::featureIcon(aFeature
);
}
}
break;
}
}
break;
@@
-360,9
+363,9
@@
int XGUI_PartDataModel::rowCount(const QModelIndex& parent) const
case MyRoot:
{
DocumentPtr aDoc = partDocument();
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 0;
}
case ParamsFolder:
@@
-398,7
+401,13
@@
QModelIndex XGUI_PartDataModel::index(int theRow, int theColumn, const QModelInd
case 2:
return createIndex(theRow, 0, (qint32) BodiesFolder);
case 3:
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);
}
default:
return createIndex(theRow, theColumn, (qint32) HistoryObject);
}
@@
-447,8
+456,10
@@
DocumentPtr XGUI_PartDataModel::partDocument() const
{
DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultPart::group(), myId);
{
DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
ObjectPtr aObject = aRootDoc->object(ModelAPI_ResultPart::group(), myId);
- ResultPartPtr aPart = boost::dynamic_pointer_cast<ModelAPI_ResultPart>(aObject);
- return aPart->partDoc();
+ ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aObject);
+ if (aPart)
+ return aPart->partDoc();
+ return DocumentPtr(); // null if not found
}
ObjectPtr XGUI_PartDataModel::object(const QModelIndex& theIndex) const
}
ObjectPtr XGUI_PartDataModel::object(const QModelIndex& theIndex) const
@@
-473,7
+484,7
@@
ObjectPtr XGUI_PartDataModel::object(const QModelIndex& theIndex) const
case GroupObject:
return partDocument()->object(ModelAPI_ResultGroup::group(), theIndex.row());
case HistoryObject:
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();
}
}
return ObjectPtr();
}
@@
-490,13
+501,13
@@
QModelIndex XGUI_PartDataModel::findParent(const ObjectPtr& theObject) const
QModelIndex XGUI_PartDataModel::findGroup(const std::string& theGroup) const
{
QModelIndex XGUI_PartDataModel::findGroup(const std::string& theGroup) const
{
- if (theGroup
.compare(ModelAPI_ResultParameters::group()) == 0
)
+ if (theGroup
== ModelAPI_ResultParameters::group()
)
return createIndex(0, 0, (qint32) ParamsFolder);
return createIndex(0, 0, (qint32) ParamsFolder);
- if (theGroup
.compare(ModelAPI_ResultConstruction::group()) == 0
)
+ if (theGroup
== ModelAPI_ResultConstruction::group()
)
return createIndex(1, 0, (qint32) ConstructFolder);
return createIndex(1, 0, (qint32) ConstructFolder);
- if (theGroup
.compare(ModelAPI_ResultBody::group()) == 0
)
+ if (theGroup
== ModelAPI_ResultBody::group()
)
return createIndex(2, 0, (qint32) BodiesFolder);
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();
}
return createIndex(3, 0, (qint32) GroupsFolder);
return QModelIndex();
}
@@
-505,7
+516,7
@@
ResultPartPtr XGUI_PartDataModel::part() const
{
DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
ObjectPtr aObj = aRootDoc->object(ModelAPI_ResultPart::group(), myId);
{
DocumentPtr aRootDoc = ModelAPI_Session::get()->moduleDocument();
ObjectPtr aObj = aRootDoc->object(ModelAPI_ResultPart::group(), myId);
- return
boost
::dynamic_pointer_cast<ModelAPI_ResultPart>(aObj);
+ return
std
::dynamic_pointer_cast<ModelAPI_ResultPart>(aObj);
}
QModelIndex XGUI_PartDataModel::objectIndex(const ObjectPtr& theObject) const
}
QModelIndex XGUI_PartDataModel::objectIndex(const ObjectPtr& theObject) const
@@
-536,7
+547,16
@@
QModelIndex XGUI_PartDataModel::objectIndex(const ObjectPtr& theObject) const
else if (aGroup == ModelAPI_ResultGroup::group())
return createIndex(aRow, 0, (qint32) GroupObject);
else
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;
}
}
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