]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Exclude sub-features from history functionality
authorvsv <vitaly.smetannikov@opencascade.com>
Wed, 8 Jul 2015 13:23:33 +0000 (16:23 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Wed, 8 Jul 2015 13:23:46 +0000 (16:23 +0300)
src/ModuleBase/ModuleBase_Tools.cpp
src/ModuleBase/ModuleBase_Tools.h
src/PartSet/PartSet_DocumentDataModel.cpp
src/PartSet/PartSet_Module.cpp
src/PartSet/PartSet_PartDataModel.cpp
src/XGUI/XGUI_ContextMenuMgr.cpp
src/XGUI/XGUI_Workshop.cpp

index d62879f7f6ff47dccbfb9f75ac2073bed9ada638..d3739e8439d7e354045067a8998ae158a6962588 100644 (file)
@@ -12,6 +12,7 @@
 #include <ModelAPI_Attribute.h>
 #include <ModelAPI_AttributeRefAttr.h>
 #include <ModelAPI_ResultParameter.h>
+#include <ModelAPI_Tools.h>
 
 #include <GeomDataAPI_Point2D.h>
 #include <Events_Error.h>
@@ -216,11 +217,12 @@ TopAbs_ShapeEnum shapeType(const QString& theType)
   return TopAbs_SHAPE;
 }
 
-void checkObjects(const QObjectPtrList& theObjects, bool& hasResult, bool& hasFeature, bool& hasParameter)
+void checkObjects(const QObjectPtrList& theObjects, bool& hasResult, bool& hasFeature, bool& hasParameter, bool& hasSubFeature)
 {
   hasResult = false;
   hasFeature = false;
   hasParameter = false;
+  hasSubFeature = false;
   foreach(ObjectPtr aObj, theObjects) {
     FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObj);
     ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(aObj);
@@ -229,7 +231,9 @@ void checkObjects(const QObjectPtrList& theObjects, bool& hasResult, bool& hasFe
     hasResult = (aResult.get() != NULL);
     hasFeature = (aFeature.get() != NULL);
     hasParameter = (aConstruction.get() != NULL);
-    if (hasFeature && hasResult  && hasParameter)
+    if (hasFeature) 
+      hasSubFeature = (ModelAPI_Tools::compositeOwner(aFeature) != NULL);
+    if (hasFeature && hasResult  && hasParameter && hasSubFeature)
       break;
   }
 }
index 0bb3e68eeaabe006d9e1c6db3beca31107d3805b..f0d9ad2b6b6fbdd10529bf2e8bc356eed3e0db06 100644 (file)
@@ -89,8 +89,9 @@ Check types of objects which are in the given list
 \param hasResult will be set to true if list contains Result objects
 \param hasFeature will be set to true if list contains Feature objects
 \param hasParameter will be set to true if list contains Parameter objects
+\param hasSubFeature will be set to true if list contains Sub-Feature objects
 */
-MODULEBASE_EXPORT void checkObjects(const QObjectPtrList& theObjects, bool& hasResult, bool& hasFeature, bool& hasParameter);
+MODULEBASE_EXPORT void checkObjects(const QObjectPtrList& theObjects, bool& hasResult, bool& hasFeature, bool& hasParameter, bool& hasSubFeature);
 }
 
 #endif
index 3ffc164cb2c53c91252970d7d74b728f75426b13..8b5204c7ffba4bb417449ebdf3b998146a593c6c 100644 (file)
@@ -802,6 +802,8 @@ void PartSet_DocumentDataModel::onMouseDoubleClick(const QModelIndex& theIndex)
 {
   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)
index 631adfd17f3c26e54a0cb108837014d07a49df31..e518c7df33a602a001d1e9ce1823bcac0634b3f6 100644 (file)
@@ -782,7 +782,8 @@ void PartSet_Module::addObjectBrowserMenu(QMenu* theMenu) const
     bool hasResult = false;
     bool hasFeature = false;
     bool hasParameter = false;
-    ModuleBase_Tools::checkObjects(aObjects, hasResult, hasFeature, hasParameter);
+    bool hasSubFeature = false;
+    ModuleBase_Tools::checkObjects(aObjects, hasResult, hasFeature, hasParameter, hasSubFeature);
 
     ObjectPtr aObject = aObjects.first();
     if (aObject) {
index d1a48fdf57b2726987491989e42f78b4582f57ee..98eed0060821f6f9555de82f04d3f30c4daa9c19 100644 (file)
@@ -424,10 +424,15 @@ QModelIndex PartSet_PartDataModel::lastHistoryItem() const
 
 Qt::ItemFlags PartSet_PartDataModel::flags(const QModelIndex& theIndex) const
 {
+  // Disable sub-features at column 1
+  if ((theIndex.column() == 1)  && (theIndex.internalId() >= 0))
+    return 0;
+
   Qt::ItemFlags aFlags = Qt::ItemIsSelectable;
   if (object(theIndex)) {
     aFlags |= Qt::ItemIsEditable;
   }
+
   if (theIndex.internalId() == HistoryObject) {
     if (theIndex.row() <= lastHistoryRow() || (theIndex.column() == 1))
       aFlags |= Qt::ItemIsEnabled;
index 8da4ebda28455e529d251aa028209ec78aff7918..fa76cfa4d9364c0143fa3b62b38628d84defd8df 100644 (file)
@@ -163,7 +163,8 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu()
     bool hasResult = false;
     bool hasFeature = false;
     bool hasParameter = false;
-    ModuleBase_Tools::checkObjects(aObjects, hasResult, hasFeature, hasParameter);
+    bool hasSubFeature = false;
+    ModuleBase_Tools::checkObjects(aObjects, hasResult, hasFeature, hasParameter, hasSubFeature);
 
     //Process Feature
     if (aSelected == 1) {
@@ -200,8 +201,10 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu()
         action("WIREFRAME_CMD")->setEnabled(true);
       }
     }
-    if (hasFeature || hasParameter)
-      action("DELETE_CMD")->setEnabled(true);
+    if (!hasSubFeature) {
+      if (hasFeature || hasParameter)
+        action("DELETE_CMD")->setEnabled(true);
+    }
   }
   if (myWorkshop->canChangeColor())
     action("COLOR_CMD")->setEnabled(true);
index bf5be2e6b4813e8e45ad7488ba91ae32a69ffa0f..6df726e2df42a0e399be8d18e8661cafc8095e33 100644 (file)
@@ -1000,7 +1000,8 @@ void XGUI_Workshop::deleteObjects()
   bool hasResult = false;
   bool hasFeature = false;
   bool hasParameter = false;
-  ModuleBase_Tools::checkObjects(anObjects, hasResult, hasFeature, hasParameter);
+  bool hasSubFeature = false;
+  ModuleBase_Tools::checkObjects(anObjects, hasResult, hasFeature, hasParameter, hasSubFeature);
   if (!(hasFeature || hasParameter))
     return;