]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
SkethMgr - to avoid big arrows in gzy_reactor file
authornds <natalia.donis@opencascade.com>
Thu, 11 Jun 2015 12:48:35 +0000 (15:48 +0300)
committernds <natalia.donis@opencascade.com>
Thu, 11 Jun 2015 12:48:35 +0000 (15:48 +0300)
Displayer - performance correction on the file
ISelection, WidgetValidated - preliminary processing of preselection

src/ModuleBase/ModuleBase_ISelection.cpp
src/ModuleBase/ModuleBase_ISelection.h
src/ModuleBase/ModuleBase_WidgetValidated.cpp
src/ModuleBase/ModuleBase_WidgetValidated.h
src/PartSet/PartSet_Module.h
src/PartSet/PartSet_SketcherMgr.cpp
src/XGUI/XGUI_Displayer.cpp

index 190447668ee13b384c103db32d28c4de004352d5..708382115cc5a3783d074411c92b094e00cafcf7 100644 (file)
@@ -1,7 +1,44 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
 
 #include "ModuleBase_ISelection.h"
 
+//********************************************************************
+ResultPtr ModuleBase_ISelection::getResult(const ModuleBase_ViewerPrs& thePrs)
+{
+  ResultPtr aResult;
+
+  if (!thePrs.owner().IsNull()) {
+    ObjectPtr anObject = getSelectableObject(thePrs.owner());
+    aResult = std::dynamic_pointer_cast<ModelAPI_Result>(anObject);
+  }
+  else {
+    aResult = std::dynamic_pointer_cast<ModelAPI_Result>(thePrs.object());
+  }
+
+  return aResult;
+}
+
+//********************************************************************
+GeomShapePtr ModuleBase_ISelection::getShape(const ModuleBase_ViewerPrs& thePrs)
+{
+  GeomShapePtr aShape;
+
+  const TopoDS_Shape& aTDSShape = thePrs.shape();
+  // if only result is selected, an empty shape is set to the model
+  if (aTDSShape.IsNull()) {
+  }
+  else {
+    aShape = GeomShapePtr(new GeomAPI_Shape());
+    aShape->setImpl(new TopoDS_Shape(aTDSShape));
+    // If the result object is built on the same shape, the result shape here is empty one
+    ResultPtr aResult = getResult(thePrs);
+    if (aResult.get() && aShape->isEqual(aResult->shape()))
+      aShape = GeomShapePtr();
+  }
+  return aShape;
+}
+
+//********************************************************************
 QList<ModuleBase_ViewerPrs> ModuleBase_ISelection::getViewerPrs(const QObjectPtrList& theObjects)
 {
   QList<ModuleBase_ViewerPrs> aSelectedPrs;
index 86cfd4f527c5ef6ed7b404ef947b30b0f737cb5e..e6a92d558313dd3b7acb7663a4d38f5a33f920a5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
 
 // File:        ModuleBase_ISelection.h
 // Created:     2 June 2014
@@ -11,6 +11,9 @@
 #include "ModuleBase_Definitions.h"
 #include "ModuleBase_ViewerPrs.h"
 
+#include <ModelAPI_Result.h>
+#include <GeomAPI_Shape.h>
+
 #include <QModelIndexList>
 #include <AIS_ListOfInteractive.hxx>
 #include <NCollection_List.hxx>
@@ -70,6 +73,18 @@ class ModuleBase_ISelection
   virtual void selectedShapes(NCollection_List<TopoDS_Shape>& theList, 
     std::list<ObjectPtr>& theOwners) const = 0;
 
+  //! Return the shape from the viewer presentation.
+  //! If the shape is equal to the shape of selected object, it returns an empty shape
+  //! \param thePrs a selected object
+  //! \return a shape
+  MODULEBASE_EXPORT ResultPtr getResult(const ModuleBase_ViewerPrs& thePrs);
+
+  //! Return the shape from the viewer presentation.
+  //! If the shape is equal to the shape of selected object, it returns an empty shape
+  //! \param thePrs a selected object
+  //! \return a shape
+  MODULEBASE_EXPORT GeomShapePtr getShape(const ModuleBase_ViewerPrs& thePrs);
+
   //! Wraps the object list into the viewer prs list
   //! \param theObjects a list of objects
   //! \return a list of prs, where only object is not empty
index 619548f39916c93f810f1eee8a1267d93794de66..6caa7de0bd521be05f0b98f0290c8ffdc2b507ca 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
 
 #include <ModuleBase_WidgetValidated.h>
 #include <ModuleBase_FilterFactory.h>
@@ -49,6 +49,10 @@ bool ModuleBase_WidgetValidated::setSelection(const QList<ModuleBase_ViewerPrs>&
 //********************************************************************
 bool ModuleBase_WidgetValidated::isValidSelection(const ModuleBase_ViewerPrs& theValue)
 {
+  bool aValid = isValidSelectionCustom(theValue);
+  if (!aValid)
+    return aValid;
+
   DataPtr aData = myFeature->data();
   AttributePtr anAttribute = myFeature->attribute(attributeID());
 
@@ -63,8 +67,7 @@ bool ModuleBase_WidgetValidated::isValidSelection(const ModuleBase_ViewerPrs& th
   storeAttributeValue();
 
   // saves the owner value to the widget attribute
-  bool aValid = setSelectionCustom(theValue);
-
+  aValid = setSelectionCustom(theValue);
   if (aValid)
     // checks the attribute validity
     aValid = isValidAttribute();
@@ -88,6 +91,12 @@ bool ModuleBase_WidgetValidated::isValidSelection(const ModuleBase_ViewerPrs& th
   return aValid;
 }
 
+//********************************************************************
+bool ModuleBase_WidgetValidated::isValidSelectionCustom(const ModuleBase_ViewerPrs& thePrs)
+{
+  return true;
+}
+
 //********************************************************************
 bool ModuleBase_WidgetValidated::isValidAttribute() const
 {
index 0ac6657e7d302fe66846362903933581a8412ec6..5c4f319dc090b8a49bc650666e75d34426eb3ae1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
 
 // File:        ModuleBase_WidgetValidated.h
 // Created:     12 Mar 2015
@@ -41,7 +41,7 @@ class MODULEBASE_EXPORT ModuleBase_WidgetValidated : public ModuleBase_ModelWidg
   virtual ~ModuleBase_WidgetValidated();
 
   /// Checks all widget validator if the owner is valid
-  /// \param theOwner a selected owner in the view
+  /// \param theValue a selected presentation in the view
   /// \return a boolean value
   bool isValidSelection(const ModuleBase_ViewerPrs& theValue);
 
@@ -65,6 +65,11 @@ protected:
   /// \param theValid a boolean flag, if restore happens for valid parameters
   virtual void restoreAttributeValue(const bool theValid) = 0;
 
+  /// Checks the widget validity. By default, it returns true.
+  /// \param theValue a selected presentation in the view
+  /// \return a boolean value
+  virtual bool isValidSelectionCustom(const ModuleBase_ViewerPrs& thePrs);
+
   /// Fills the attribute with the value of the selected owner
   /// \param theOwner a selected owner
   virtual bool setSelectionCustom(const ModuleBase_ViewerPrs& thePrs) = 0;
index 1228a03ba06b0ff87e77345630eb8cf130435c9b..aa57ecd8aee8b11a6d2a9ac52fd8734312ea60dc 100644 (file)
@@ -157,6 +157,10 @@ public slots:
   /// \param theAIS a presentation object
   virtual void onObjectDisplayed(ObjectPtr theObject, AISObjectPtr theAIS);
 
+  /// Called on transformation in current viewer
+  /// \param theTrsfType type of tranformation
+  void onViewTransformed(int theTrsfType = 2);
+
 protected slots:
   /// Called when previous operation is finished
   virtual void onSelectionChanged();
@@ -188,10 +192,6 @@ protected slots:
    /// Processing of vertex selected
    void onVertexSelected();
 
-   /// Called on transformation in current viewer
-   /// \param theTrsfType type of tranformation
-   void onViewTransformed(int theTrsfType = 2);
-
    void onTreeViewDoubleClick(const QModelIndex&);
 
  private:
index df93f32a21a0ae428b83e7d427d7e460f7f75f0c..a84ea16094262d8c94ec20387de814a5eecc43fa 100644 (file)
@@ -689,6 +689,8 @@ bool PartSet_SketcherMgr::isDistanceOperation(ModuleBase_Operation* theOperation
 
 void PartSet_SketcherMgr::startSketch(ModuleBase_Operation* theOperation)
 {
+  myModule->onViewTransformed();
+
   // Display all sketcher sub-Objects
   myCurrentSketch = std::dynamic_pointer_cast<ModelAPI_CompositeFeature>(theOperation->feature());
   XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(myModule->workshop());
index d76bf6d3fb0f77cb45b208988d522b7808b9e7ec..cae0e29e201ccf1a383d09e1e7d93f570b1c3396 100644 (file)
@@ -363,8 +363,10 @@ void XGUI_Displayer::activateObjects(const QIntList& theModes, const QObjectPtrL
   AIS_ListIteratorOfListOfInteractive aLIt(aPrsList);
   for(aLIt.Initialize(aPrsList); aLIt.More(); aLIt.Next()){
     anAISIO = aLIt.Value();
-    activate(anAISIO, myActiveSelectionModes, theUpdateViewer);
+    activate(anAISIO, myActiveSelectionModes, false);
   }
+  if (theUpdateViewer)
+    updateViewer();
 }
 
 bool XGUI_Displayer::isActive(ObjectPtr theObject) const