-
- std::list<std::string>::const_iterator aIt;
- for (aIt = aGroups.begin(); aIt != aGroups.end(); ++aIt) {
- std::string aGroup = (*aIt);
- if (aDoc == aRootDoc) { // If root objects
- int aRow = aRootDoc->size(aGroup);
- if (aGroup == aRootType) {
- // Process root folder
- removeRow(aRow + aNbFolders);
- rebuildBranch(aNbFolders, aRow);
- } else {
- // Process root sub-folder
- int aFolderId = myXMLReader->rootFolderId(aGroup);
- if (aFolderId != -1) {
- QModelIndex aFolderIndex = createIndex(aFolderId, 0, -1);
- removeRow(aRow, aFolderIndex);
- //rebuildBranch(0, aRow);
- }
- }
- // Check that some folders could erased
- QStringList aNotEmptyFolders = listOfShowNotEmptyFolders();
- foreach (QString aNotEmptyFolder, aNotEmptyFolders) {
- if ((aNotEmptyFolder.toStdString() == aGroup) && (aRootDoc->size(aGroup) == 0)) {
- // Appears first object in folder which can not be shown empty
- removeRow(myXMLReader->rootFolderId(aGroup));
- //rebuildBranch(0, aNbFolders + aDoc->size(myXMLReader->rootType()));
- break;
- }
- }
- } else {
- // Remove row for sub-document
- QModelIndex aDocRoot = findDocumentRootIndex(aDoc.get());
- if (aDocRoot.isValid()) {
- int aRow = aDoc->size(aGroup);
- int aNbSubFolders = foldersCount(aDoc.get());
- if (aGroup == aSubType) {
- // List of objects under document root
- removeRow(aRow + aNbSubFolders, aDocRoot);
- rebuildBranch(aNbSubFolders, aRow, aDocRoot);
- } else {
- // List of objects under a folder
- int aFolderId = folderId(aGroup, aDoc.get());
- if (aFolderId != -1) {
- QModelIndex aFolderRoot = createIndex(aFolderId, 0, aDoc.get());
- removeRow(aRow, aFolderRoot);
- //rebuildBranch(0, aRow, aFolderRoot);
- }
- }
- // Check that some folders could disappear
- QStringList aNotEmptyFolders = listOfShowNotEmptyFolders(false);
- int aSize = aDoc->size(aGroup);
- foreach (QString aNotEmptyFolder, aNotEmptyFolders) {
- if ((aNotEmptyFolder.toStdString() == aGroup) && (aSize == 0)) {
- // Appears first object in folder which can not be shown empty
- removeRow(myXMLReader->subFolderId(aGroup), aDocRoot);
- //rebuildBranch(0, aNbSubFolders + aDoc->size(myXMLReader->subType()), aDocRoot);
- break;
- }
- }
- }
- }
- }
- } else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED)) {
+ }
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_DELETED)) {
+ std::shared_ptr<ModelAPI_ObjectDeletedMessage> aUpdMsg =
+ std::dynamic_pointer_cast<ModelAPI_ObjectDeletedMessage>(theMessage);
+ const std::list<std::pair<std::shared_ptr<ModelAPI_Document>, std::string>>& aMsgGroups =
+ aUpdMsg->groups();
+ std::list<std::pair<std::shared_ptr<ModelAPI_Document>, std::string>>::const_iterator aIt;
+ for (aIt = aMsgGroups.cbegin(); aIt != aMsgGroups.cend(); aIt++)
+ QTreeNodesList aList = myRoot->objectsDeleted(aIt->first, aIt->second.c_str());
+ rebuildDataTree();
+ }
+ else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED)) {