X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_DataModel.cpp;h=fa38f0a1d4a129570bd723d9a2d22d54a2dee8fa;hb=220bd2b37119be1c65abf88a88792445cb9d99f8;hp=47191c887ed5ccc3e1179aa64ec66ee042a0e934;hpb=916e960b63ab9c578262576550fbed29b4b71c75;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_DataModel.cpp b/src/XGUI/XGUI_DataModel.cpp index 47191c887..fa38f0a1d 100644 --- a/src/XGUI/XGUI_DataModel.cpp +++ b/src/XGUI/XGUI_DataModel.cpp @@ -58,7 +58,7 @@ ModelAPI_Document* getSubDocument(void* theObj) // Constructor ************************************************* -XGUI_DataModel::XGUI_DataModel(QObject* theParent) : ModuleBase_IDocumentDataModel(theParent) +XGUI_DataModel::XGUI_DataModel(QObject* theParent) : QAbstractItemModel(theParent) { myXMLReader.readAll(); @@ -88,7 +88,7 @@ void XGUI_DataModel::processEvent(const std::shared_ptr& theMess std::string aObjType; for (aIt = aObjects.begin(); aIt != aObjects.end(); ++aIt) { ObjectPtr aObject = (*aIt); - // We do not show objects which not has to be shown in object browser + // We do not show objects which does not need to be shown in object browser if (!aObject->isInHistory()) continue; @@ -214,11 +214,7 @@ void XGUI_DataModel::processEvent(const std::shared_ptr& theMess break; } } - } -#ifdef _DEBUG - else - Events_Error::send("Problem with Data Model definition of sub-document"); -#endif + } } } } else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED)) { @@ -259,17 +255,20 @@ void XGUI_DataModel::processEvent(const std::shared_ptr& theMess aParent = createIndex(folderId(aGroup, aDoc.get()), 0, aDoc.get()); } int aChildNb = rowCount(aParent); - rebuildBranch(aStartId, aChildNb - aStartId); + rebuildBranch(aStartId, aChildNb - aStartId, aParent); } else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_DOCUMENT_CHANGED)) { DocumentPtr aDoc = ModelAPI_Session::get()->activeDocument(); if (aDoc != aRootDoc) { QModelIndex aDocRoot = findDocumentRootIndex(aDoc.get()); if (aDocRoot.isValid()) emit dataChanged(aDocRoot, aDocRoot); -#ifdef _DEBUG - else - Events_Error::send("Problem with Data Model definition of sub-document"); -#endif + else + // We have got a new document + rebuildDataTree(); +//#ifdef _DEBUG +// else +// Events_Error::send("Problem with Data Model definition of sub-document"); +//#endif } } } @@ -283,7 +282,8 @@ void XGUI_DataModel::clear() //****************************************************** void XGUI_DataModel::rebuildDataTree() { - + beginResetModel(); + endResetModel(); } //****************************************************** @@ -371,13 +371,13 @@ QVariant XGUI_DataModel::data(const QModelIndex& theIndex, int theRole) const case Qt::DecorationRole: return QIcon(myXMLReader.rootFolderIcon(theIndexRow).c_str()); case Qt::ForegroundRole: - if ((flags(theIndex) & Qt::ItemIsEditable) == 0) + if ((theIndex.flags() & Qt::ItemIsEditable) == 0) return QBrush(Qt::lightGray); return ACTIVE_COLOR; } } else { // an object or sub-document if (theRole == Qt::ForegroundRole) { - if ((flags(theIndex) & Qt::ItemIsEditable) == 0) + if ((theIndex.flags() & Qt::ItemIsEditable) == 0) return QBrush(Qt::lightGray); return ACTIVE_COLOR; } @@ -731,7 +731,7 @@ Qt::ItemFlags XGUI_DataModel::flags(const QModelIndex& theIndex) const } else if (aDoc) { // A folder under sub-document if (aActiveDoc.get() != aDoc) - return aDefaultFlag; + return aNullFlag; } return aEditingFlag; }