#include <ModelAPI_Iterator.h>
#include <ModelAPI_Document.h>
#include <ModelAPI_Feature.h>
-#include <ModelAPI_Object.h>
+#include <ModelAPI_Data.h>
#include <ModelAPI_AttributeDocRef.h>
#include <QIcon>
-XGUI_TopDataModel::XGUI_TopDataModel(const std::shared_ptr<ModelAPI_Document>& theDocument, QObject* theParent)
+XGUI_TopDataModel::XGUI_TopDataModel(const boost::shared_ptr<ModelAPI_Document>& theDocument, QObject* theParent)
: XGUI_FeaturesModel(theDocument, theParent)
{
}
return tr("Parameters");
case ParamObject:
{
- std::shared_ptr<ModelAPI_Feature> aFeature = myDocument->feature(PARAMETERS_GROUP, theIndex.row());
- return aFeature->data()->getName().c_str();
+ boost::shared_ptr<ModelAPI_Feature> aFeature = myDocument->feature(PARAMETERS_GROUP, theIndex.row());
+ if (aFeature)
+ return aFeature->data()->getName().c_str();
}
case ConstructFolder:
return tr("Constructions");
case ConstructObject:
{
- std::shared_ptr<ModelAPI_Feature> aFeature = myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row());
- return aFeature->data()->getName().c_str();
+ boost::shared_ptr<ModelAPI_Feature> aFeature = myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row());
+ if (aFeature)
+ return aFeature->data()->getName().c_str();
}
}
break;
if (!theParent.isValid()) {
switch (theRow) {
case 0:
- return createIndex(theRow, theColumn, (quintptr) ParamsFolder);
+ return createIndex(theRow, theColumn, (qint32) ParamsFolder);
case 1:
- return createIndex(theRow, theColumn, (quintptr) ConstructFolder);
+ return createIndex(theRow, theColumn, (qint32) ConstructFolder);
}
} else {
if (theParent.internalId() == ParamsFolder)
- return createIndex(theRow, theColumn, (quintptr) ParamObject);
+ return createIndex(theRow, theColumn, (qint32) ParamObject);
if (theParent.internalId() == ConstructFolder)
- return createIndex(theRow, theColumn, (quintptr) ConstructObject);
+ return createIndex(theRow, theColumn, (qint32) ConstructObject);
}
return QModelIndex();
}
case ConstructFolder:
return QModelIndex();
case ParamObject:
- return createIndex(0, 0, (quintptr) ParamsFolder);
+ return createIndex(0, 0, (qint32) ParamsFolder);
case ConstructObject:
- return createIndex(1, 0, (quintptr) ConstructFolder);
+ return createIndex(1, 0, (qint32) ConstructFolder);
}
return QModelIndex();
}
switch (theIndex.internalId()) {
case ParamsFolder:
case ConstructFolder:
- return 0;
+ return FeaturePtr();
case ParamObject:
return myDocument->feature(PARAMETERS_GROUP, theIndex.row());
case ConstructObject:
return myDocument->feature(CONSTRUCTIONS_GROUP, theIndex.row());
}
- return 0;
+ return FeaturePtr();
+}
+
+
+QModelIndex XGUI_TopDataModel::findParent(const boost::shared_ptr<ModelAPI_Feature>& theFeature) const
+{
+ QString aGroup(theFeature->getGroup().c_str());
+
+ if (theFeature->getGroup().compare(PARAMETERS_GROUP) == 0)
+ return createIndex(0, 0, (qint32) ParamsFolder);
+ if (theFeature->getGroup().compare(CONSTRUCTIONS_GROUP) == 0)
+ return createIndex(1, 0, (qint32) ConstructFolder);
+ return QModelIndex();
+}
+
+QModelIndex XGUI_TopDataModel::findGroup(const std::string& theGroup) const
+{
+ if (theGroup.compare(PARAMETERS_GROUP) == 0)
+ return createIndex(0, 0, (qint32) ParamsFolder);
+ if (theGroup.compare(CONSTRUCTIONS_GROUP) == 0)
+ return createIndex(1, 0, (qint32) ConstructFolder);
+ return QModelIndex();
}
//******************************************************************
//******************************************************************
//******************************************************************
-XGUI_PartDataModel::XGUI_PartDataModel(const std::shared_ptr<ModelAPI_Document>& theDocument, QObject* theParent)
+XGUI_PartDataModel::XGUI_PartDataModel(const boost::shared_ptr<ModelAPI_Document>& theDocument, QObject* theParent)
: XGUI_PartModel(theDocument, theParent)
{
}
switch (theIndex.internalId()) {
case MyRoot:
{
- std::shared_ptr<ModelAPI_Feature> aFeature = myDocument->feature(PARTS_GROUP, myId);
- return aFeature->data()->getName().c_str();
+ boost::shared_ptr<ModelAPI_Feature> aFeature = myDocument->feature(PARTS_GROUP, myId);
+ if (aFeature)
+ return aFeature->data()->getName().c_str();
}
case ParamsFolder:
return tr("Parameters");
return tr("Constructions");
case ParamObject:
{
- std::shared_ptr<ModelAPI_Feature> aFeature =
+ boost::shared_ptr<ModelAPI_Feature> aFeature =
featureDocument()->feature(PARAMETERS_GROUP, theIndex.row());
- return aFeature->data()->getName().c_str();
+ if (aFeature)
+ return aFeature->data()->getName().c_str();
}
case ConstructObject:
{
- std::shared_ptr<ModelAPI_Feature> aFeature =
+ boost::shared_ptr<ModelAPI_Feature> aFeature =
featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row());
- return aFeature->data()->getName().c_str();
+ if (aFeature)
+ return aFeature->data()->getName().c_str();
}
}
break;
QModelIndex XGUI_PartDataModel::index(int theRow, int theColumn, const QModelIndex &theParent) const
{
if (!theParent.isValid())
- return createIndex(theRow, 0, (quintptr) MyRoot);
+ return createIndex(theRow, 0, (qint32) MyRoot);
int aId = (int)theParent.internalId();
switch (aId) {
case MyRoot:
switch (theRow) {
case 0:
- return createIndex(0, 0, (quintptr) ParamsFolder);
+ return createIndex(0, 0, (qint32) ParamsFolder);
case 1:
- return createIndex(1, 0, (quintptr) ConstructFolder);
+ return createIndex(1, 0, (qint32) ConstructFolder);
}
case ParamsFolder:
- return createIndex(theRow, 0, (quintptr) ParamObject);
+ return createIndex(theRow, 0, (qint32) ParamObject);
case ConstructFolder:
- return createIndex(theRow, 0, (quintptr) ConstructObject);
+ return createIndex(theRow, 0, (qint32) ConstructObject);
}
return QModelIndex();
}
return QModelIndex();
case ParamsFolder:
case ConstructFolder:
- return createIndex(0, 0, (quintptr) MyRoot);
+ return createIndex(0, 0, (qint32) MyRoot);
case ParamObject:
- return createIndex(0, 0, (quintptr) ParamsFolder);
+ return createIndex(0, 0, (qint32) ParamsFolder);
case ConstructObject:
- return createIndex(1, 0, (quintptr) ConstructFolder);
+ return createIndex(1, 0, (qint32) ConstructFolder);
}
return QModelIndex();
}
}
-std::shared_ptr<ModelAPI_Document> XGUI_PartDataModel::featureDocument() const
+boost::shared_ptr<ModelAPI_Document> XGUI_PartDataModel::featureDocument() const
{
- std::shared_ptr<ModelAPI_Feature> aFeature = myDocument->feature(PARTS_GROUP, myId);
+ boost::shared_ptr<ModelAPI_Feature> aFeature = myDocument->feature(PARTS_GROUP, myId);
return aFeature->data()->docRef("PartDocument")->value();
}
return myDocument->feature(PARTS_GROUP, myId);
case ParamsFolder:
case ConstructFolder:
- return 0;
+ return FeaturePtr();
case ParamObject:
return featureDocument()->feature(PARAMETERS_GROUP, theIndex.row());
case ConstructObject:
return featureDocument()->feature(CONSTRUCTIONS_GROUP, theIndex.row());
}
- return 0;
+ return FeaturePtr();
+}
+
+bool XGUI_PartDataModel::hasDocument(const boost::shared_ptr<ModelAPI_Document>& theDoc) const
+{
+ return (featureDocument() == theDoc);
+}
+
+
+QModelIndex XGUI_PartDataModel::findParent(const boost::shared_ptr<ModelAPI_Feature>& theFeature) const
+{
+ QString aGroup(theFeature->getGroup().c_str());
+
+ if (theFeature->getGroup().compare(PARAMETERS_GROUP) == 0)
+ return createIndex(0, 0, (qint32) ParamsFolder);
+ if (theFeature->getGroup().compare(CONSTRUCTIONS_GROUP) == 0)
+ return createIndex(1, 0, (qint32) ConstructFolder);
+ return QModelIndex();
+}
+
+QModelIndex XGUI_PartDataModel::findGroup(const std::string& theGroup) const
+{
+ if (theGroup.compare(PARAMETERS_GROUP) == 0)
+ return createIndex(0, 0, (qint32) ParamsFolder);
+ if (theGroup.compare(CONSTRUCTIONS_GROUP) == 0)
+ return createIndex(1, 0, (qint32) ConstructFolder);
+ return QModelIndex();
}