]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #2973: Make "Show only" mode more feasible for using in bug groups
authorvsv <vsv@opencascade.com>
Thu, 1 Aug 2019 14:17:23 +0000 (17:17 +0300)
committervsv <vsv@opencascade.com>
Thu, 1 Aug 2019 14:17:23 +0000 (17:17 +0300)
src/ModuleBase/ModuleBase_IModule.h
src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp
src/PartSet/PartSet_CustomPrs.cpp
src/PartSet/PartSet_CustomPrs.h
src/PartSet/PartSet_Module.cpp
src/PartSet/PartSet_Module.h
src/PartSet/PartSet_OperationPrs.cpp

index 165828fd0806ce6bb2a7cebfedfe88eeb452f80d..529c1f1531e94a02876c2d182f049c769fa4bf15 100644 (file)
@@ -290,6 +290,13 @@ class MODULEBASE_EXPORT ModuleBase_IModule : public QObject
   virtual bool customizeObject(ObjectPtr theObject, const ModuleBase_CustomizeFlag& theFlag,
                                const bool theUpdateViewer);
 
+  /// Disable displaying of custom mode
+  /// \param theMode a mode to disable
+  virtual void disableCustomMode(ModuleBase_CustomizeFlag theMode) {}
+
+  /// Enables disabled custom mode
+  virtual void enableCustomModes() {}
+
   /// This method is called on object browser creation for customization of module specific features
   /// \param theObjectBrowser a pinter on Object Browser widget
   virtual void customizeObjectBrowser(QWidget* theObjectBrowser) {}
index c403a878039e777797e6050a7468cad8ac4aecd5..349b61502e0921878fd37ddd801bddfe93520e27 100644 (file)
@@ -223,6 +223,8 @@ void ModuleBase_WidgetMultiSelector::activateCustom()
 //********************************************************************
 void ModuleBase_WidgetMultiSelector::deactivate()
 {
+  myWorkshop->module()->enableCustomModes();
+
   ModuleBase_WidgetSelector::deactivate();
   if (myVisibleObjects.size())
     onShowOnly(false);
@@ -1102,7 +1104,11 @@ void ModuleBase_WidgetMultiSelector::onShowOnly(bool theChecked)
     for (aIt = aResults.cbegin(); aIt != aResults.cend(); aIt++) {
       myVisibleObjects.removeAll(*aIt);
     }
+    myWorkshop->module()->disableCustomMode(ModuleBase_IModule::CustomizeArguments);
   }
+  else
+    myWorkshop->module()->enableCustomModes();
+
   foreach(ObjectPtr aObj, myVisibleObjects) {
     aObj->setDisplayed(!theChecked);
   }
index 7b4ab82a290d555e4557e58159807d81eaf29a4c..549a5395e4be6ad7c3409a029218c7126b5a097c 100644 (file)
@@ -41,7 +41,8 @@
 //#define DO_NOT_VISUALIZE_CUSTOM_PRESENTATION
 
 PartSet_CustomPrs::PartSet_CustomPrs(ModuleBase_IWorkshop* theWorkshop)
-  : myWorkshop(theWorkshop), myFeature(FeaturePtr()), myPresentationIsEmpty(false)
+  : myWorkshop(theWorkshop), myFeature(FeaturePtr()), myPresentationIsEmpty(false),
+  myDisabledMode(-1)
 {
   Events_Loop* aLoop = Events_Loop::loop();
   aLoop->registerListener(this, Events_Loop::eventByName(EVENT_EMPTY_OPERATION_PRESENTATION));
@@ -93,6 +94,9 @@ bool PartSet_CustomPrs::displayPresentation(
 {
   bool isModified = false;
 
+  if (myDisabledMode == theFlag)
+    return isModified;
+
   // update the AIS objects content
   AISObjectPtr aPresentation = getPresentation(theFlag, true);
   Handle(AIS_InteractiveObject) anAISIO = aPresentation->impl<Handle(AIS_InteractiveObject)>();
@@ -243,7 +247,7 @@ void PartSet_CustomPrs::initPresentation(
   if (theFlag == ModuleBase_IModule::CustomizeArguments ||
       theFlag == ModuleBase_IModule::CustomizeResults) {
     anOperationPrs->setPointMarker(5, 2.);
-    anOperationPrs->setWidth(1);
+    anOperationPrs->setWidth((theFlag == ModuleBase_IModule::CustomizeHighlightedObjects)? 2 : 1);
   }
   else if (theFlag == ModuleBase_IModule::CustomizeHighlightedObjects)
     anAISPrs->useAISWidth();
index 6b31fdabe9a700e2f8fcd6f4a3177837b54834dd..75638bc5b9dd2b039585fa23743c84506442b68d 100644 (file)
@@ -98,6 +98,16 @@ public:
   /// it caused erroneus case because the presentation has linkage to the previous context.
   void clearPrs();
 
+  /// Disable displaying of custom mode
+  /// \param theMode a mode to disable
+  void disableCustomMode(ModuleBase_IModule::ModuleBase_CustomizeFlag theMode) {
+    myDisabledMode = theMode;
+    erasePresentation(theMode, false);
+  }
+
+  /// Enables disabled custom mode
+  void enableCustomModes() { myDisabledMode = -1; }
+
   //! Redefinition of Events_Listener method to listen a moment that the presentation becomes empty
   virtual void processEvent(const std::shared_ptr<Events_Message>& theMessage);
 
@@ -149,6 +159,8 @@ private:
   QMap<ModuleBase_IModule::ModuleBase_CustomizeFlag, AISObjectPtr> myPresentations;
   /// State whether the presentation is activated/deactivated
   QMap<ModuleBase_IModule::ModuleBase_CustomizeFlag, bool> myIsActive;
+
+  int myDisabledMode;
 };
 
 #endif
index 62987b49715b11db131581a1f2eafe51a9ac5aac..e9dbb6a38ace075ebd901aeec175cc17aa78e3f9 100644 (file)
@@ -1711,3 +1711,13 @@ ModuleBase_ITreeNode* PartSet_Module::rootNode() const
 {
   return myRoot;
 }
+
+//******************************************************
+void PartSet_Module::disableCustomMode(ModuleBase_CustomizeFlag theMode) {
+  myCustomPrs->disableCustomMode(theMode);
+}
+
+//******************************************************
+void PartSet_Module::enableCustomModes() {
+  myCustomPrs->enableCustomModes();
+}
index 25c269059e2712d098ed8c7182e0fe63fa16289f..66264e3ec54691a8e0c44e4c9a098f164e95a1eb 100644 (file)
@@ -325,6 +325,13 @@ public:
   virtual bool customizeObject(ObjectPtr theObject, const ModuleBase_CustomizeFlag& theFlag,
                                const bool theUpdateViewer);
 
+  /// Disable displaying of custom mode
+  /// \param theMode a mode to disable
+  virtual void disableCustomMode(ModuleBase_CustomizeFlag theMode);
+
+  /// Enables disabled custom mode
+  virtual void enableCustomModes();
+
   /// This method is called on object browser creation for customisation of module specific features
   /// \param theObjectBrowser a pinter on Object Browser widget
   virtual void customizeObjectBrowser(QWidget* theObjectBrowser);
index f31b1b404d2ce5f525f32cab93986fdf2ca2c04b..f9d91312c53ca0bcbceb0afb742d854fe38dff0d 100644 (file)
@@ -235,7 +235,8 @@ void PartSet_OperationPrs::appendShapeIfVisible(ModuleBase_IWorkshop* theWorksho
                               QMap<ObjectPtr, QList<GeomShapePtr> >& theObjectShapes)
 {
   XGUI_Displayer* aDisplayer = XGUI_Tools::workshop(theWorkshop)->displayer();
-  if (XGUI_Displayer::isVisible(aDisplayer, theObject)) {
+  // VSV: Do not use isVisible checking because it can be used when state "Show Only" is ON
+  //if (XGUI_Displayer::isVisible(aDisplayer, theObject)) {
     if (theGeomShape.get()) {
       if (theObjectShapes.contains(theObject))
         theObjectShapes[theObject].append(theGeomShape);
@@ -250,7 +251,7 @@ void PartSet_OperationPrs::appendShapeIfVisible(ModuleBase_IWorkshop* theWorksho
               .arg(ModuleBase_Tools::objectInfo(theObject)).toStdString().c_str());
   #endif
     }
-  }
+  //}
 }
 
 void PartSet_OperationPrs::getFeatureShapes(const FeaturePtr& theFeature,