Salome HOME
Update error manager processing. Error is got firstly from the feature, then from...
[modules/shaper.git] / src / XGUI / XGUI_DataModel.cpp
index a8fa72080920d15d8b8880a517588d140a83e90e..157c9ed767b82bc8c474735eb6ffee0572928f1d 100644 (file)
@@ -65,6 +65,7 @@ XGUI_DataModel::XGUI_DataModel(QObject* theParent) : ModuleBase_IDocumentDataMod
   Events_Loop* aLoop = Events_Loop::loop();
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_OBJECT_CREATED));
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_OBJECT_DELETED));
+  aLoop->registerListener(this, Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_ORDER_UPDATED));
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_DOCUMENT_CHANGED));
 }
@@ -207,6 +208,19 @@ void XGUI_DataModel::processEvent(const std::shared_ptr<Events_Message>& theMess
 #endif
       }
     }
+  } else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_UPDATED)) {
+    std::shared_ptr<ModelAPI_ObjectUpdatedMessage> aUpdMsg =
+        std::dynamic_pointer_cast<ModelAPI_ObjectUpdatedMessage>(theMessage);
+    std::set<ObjectPtr> aObjects = aUpdMsg->objects();
+
+    std::set<ObjectPtr>::const_iterator aIt;
+    std::string aObjType;
+    for (aIt = aObjects.begin(); aIt != aObjects.end(); ++aIt) {
+      ObjectPtr aObject = (*aIt);
+      QModelIndex aIndex = objectIndex(aObject);
+      if (aIndex.isValid())
+        emit dataChanged(aIndex, aIndex);
+    }
   } else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_ORDER_UPDATED)) {
     std::shared_ptr<ModelAPI_OrderUpdatedMessage> aUpdMsg =
         std::dynamic_pointer_cast<ModelAPI_OrderUpdatedMessage>(theMessage);
@@ -383,15 +397,15 @@ QVariant XGUI_DataModel::data(const QModelIndex& theIndex, int theRole) const
             QString aTitle = QString(aObj->data()->name().c_str());
             return aTitle + " = " + aVal;
           }
-          QString aPrefix;
+          QString aSuffix;
           if (aObj->groupName() == myXMLReader.subType()) {
             ResultPartPtr aPartRes = getPartResult(aObj);
             if (aPartRes.get()) {
               if (aPartRes->partDoc().get() == NULL)
-                aPrefix = "Not loaded ";
+                aSuffix = " (Not loaded)";
             }
           }
-          return aPrefix + aObj->data()->name().c_str();
+          return aObj->data()->name().c_str() + aSuffix;
         }
       case Qt::DecorationRole:
         return ModuleBase_IconFactory::get()->getIcon(object(theIndex));