#include "PartSet_DocumentDataModel.h"
#include "PartSet_PartDataModel.h"
+#include "PartSet_TopDataModel.h"
#include "PartSet_Module.h"
//#include "XGUI_Tools.h"
removeSubModel(aDelPartModel);
removeRow(aStart, partFolderNode(0));
}
+ } if (aGroup == ModelAPI_Feature::group()) { // Update History node
+ int aRow = historyOffset() + aRootDoc->size(ModelAPI_Feature::group());
+ removeRow(aRow);
} else { // Update top groups (other except parts
QModelIndex aIndex = myModel->findGroup(aGroup);
int aStart = myModel->rowCount(aIndex);
}
if (aPartModel) {
QModelIndex aIndex = aPartModel->findGroup(aGroup);
- int aStart = aPartModel->rowCount(aIndex);
- aIndex = createIndex(aIndex.row(), aIndex.column(), (void*) getModelIndex(aIndex));
- removeRow(aStart, aIndex);
+ if (aIndex.isValid()) {
+ int aStart = aPartModel->rowCount(aIndex);
+ aIndex = createIndex(aIndex.row(), aIndex.column(), (void*) getModelIndex(aIndex));
+ removeRow(aStart, aIndex);
+ } else {
+ int aRow = aPartModel->rowCount();
+ aIndex = createIndex(aPartModel->position() + historyOffset(), 0, HistoryNode);
+ removeRow(aRow, aIndex);
+ }
}
}
}
case Qt::DecorationRole:
return featureIcon(aFeature);
case Qt::ToolTipRole:
- return tr("Feature object");
+ {
+ ResultPtr aResult = aFeature->firstResult();
+ bool isResultAndNotLoaded = false;
+ if( aResult.get() )
+ {
+ ResultPartPtr aResultPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>( aResult );
+ if( aResultPart.get() )
+ isResultAndNotLoaded = !aResultPart->isActivated();
+ }
+ if( isResultAndNotLoaded )
+ return tr( "The part should be activated before the user may edit it" );
+ else
+ return tr( "Feature object" );
+ }
case Qt::ForegroundRole:
if (theIndex.row() > lastHistoryRow())
return QBrush(Qt::lightGray);
foreach (PartSet_PartModel* aPart, myPartModels)
delete aPart;
myPartModels.clear();
+ myActivePartModel = 0;
}
ObjectPtr PartSet_DocumentDataModel::object(const QModelIndex& theIndex) const
myIndexes.removeAt(aId);
aToRemove.removeLast();
}
- delete theModel;
+ if (theModel == myActivePartModel)
+ myActivePartModel = 0;
myPartModels.removeAll(theModel);
+ delete theModel;
}
{
if ((theIndex.internalId() >= PartsFolder) && (theIndex.internalId() <= PartResult)) {
Qt::ItemFlags aFlags = Qt::ItemIsSelectable;
- if (object(theIndex)) {
+ if (object(theIndex).get()) {
aFlags |= Qt::ItemIsEditable;
}
// Disable items which are below of last history row
} else {
QModelIndex* aIndex = toSourceModelIndex(theIndex);
const QAbstractItemModel* aModel = aIndex->model();
- return aModel->flags(*aIndex);
+ Qt::ItemFlags aFlags = aModel->flags(*aIndex);
+ if (aModel == myModel) {
+ if (myModel->object(*aIndex).get())
+ aFlags |= Qt::ItemIsEditable;
+ }
+ return aFlags;
}
}
{
if (theIndex.column() != 1)
return;
+ if (flags(theIndex) == 0)
+ return;
QTreeView* aTreeView = dynamic_cast<QTreeView*>(sender());
if ((theIndex.internalId() >= PartsFolder) && (theIndex.internalId() <= PartResult)) {
if (myActivePartModel)