]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Support of Steps visualization from the data model level.
authormpv <mpv@opencascade.com>
Mon, 8 Jul 2019 12:33:50 +0000 (15:33 +0300)
committermpv <mpv@opencascade.com>
Mon, 8 Jul 2019 12:33:50 +0000 (15:33 +0300)
src/Model/Model_Objects.cpp
src/Model/Model_ResultField.cpp
src/Model/Model_ResultField.h
src/ModelAPI/ModelAPI_ResultField.h
src/XGUI/XGUI_SelectionMgr.cpp
src/XGUI/XGUI_WorkshopListener.cpp

index 971f8a3051da67e66a5be5758220243b815f44e9..23481769153425c134bc16bf1e6440f521f40be1 100644 (file)
@@ -1877,7 +1877,9 @@ void Model_Objects::updateResults(FeaturePtr theFeature, std::set<FeaturePtr>& t
         } else if (aGroup->Get() == ModelAPI_ResultGroup::group().c_str()) {
           aNewBody = createGroup(theFeature->data(), aResIndex);
         } else if (aGroup->Get() == ModelAPI_ResultField::group().c_str()) {
-          aNewBody = createField(theFeature->data(), aResIndex);
+          ResultFieldPtr aField = createField(theFeature->data(), aResIndex);
+          aField->updateSteps(); // to refresh the internal data
+          aNewBody = aField;
         } else if (aGroup->Get() == ModelAPI_ResultParameter::group().c_str()) {
           theFeature->attributeChanged("expression"); // just produce a value
         } else {
index f345f733f66fc0063438647bff2e2a90fe47be01..67d46f058f6a3e6aa87bd0fa19195ae7ef8d8ae3 100644 (file)
@@ -150,4 +150,11 @@ std::shared_ptr<ModelAPI_ResultField::ModelAPI_FieldStep> Model_ResultField::ste
   }
   return NULL;
 }
+
+std::string Model_ResultField::Model_FieldStep::name() {
+  std::ostringstream aStream;
+  aStream<<myParent->data()->name()<<std::endl;
+  aStream<<"Step "<<(myId + 1)<<" "<<myParent->textLine(myId);
+  return aStream.str();
+}
 // LCOV_EXCL_STOP
index 307861c3494978eb85c1528b03ed151e88cf1ab5..ae66e9a106345ed4a34d1c32623e49424d063259 100644 (file)
@@ -39,7 +39,11 @@ public:
   {
   public:
     Model_FieldStep(ModelAPI_ResultField* theParent, int theId)
-      : ModelAPI_ResultField::ModelAPI_FieldStep(), myParent(theParent), myId(theId) {};
+      : ModelAPI_ResultField::ModelAPI_FieldStep(), myParent(theParent), myId(theId)
+    {
+      setData(myParent->data()); // it is not needed to have special data for the temporary
+                                 // step object, but data must be "valid" for GUI checks
+    };
 
     virtual ModelAPI_ResultField* field() const { return myParent; }
 
@@ -47,12 +51,15 @@ public:
 
     virtual std::shared_ptr<ModelAPI_Document> document() const { return myParent->document(); }
 
+    /// Returns a GUI name of this step
+    virtual std::string name();
+
   private:
     ModelAPI_ResultField* myParent;
     int myId;
   };
 
-  /// Retuns the parameters of color definition in the resources config manager
+  /// Returns the parameters of color definition in the resources configuration manager
   MODEL_EXPORT virtual void colorConfigInfo(std::string& theSection, std::string& theName,
                                             std::string& theDefault);
 
@@ -73,6 +80,9 @@ public:
   /// Removes the stored builders
   MODEL_EXPORT virtual ~Model_ResultField();
 
+  /// To refresh the steps of a field
+  MODEL_EXPORT virtual void updateSteps();
+
 protected:
   /// Makes a body on the given feature data
   Model_ResultField(std::shared_ptr<ModelAPI_Data> theOwnerData);
@@ -80,7 +90,6 @@ protected:
   friend class Model_Objects;
 
 private:
-  void updateSteps();
 
   std::vector<FieldStepPtr> mySteps;
 };
index 2393be2bf5e6ad716c0396cf7e1d282b7e686e69..09698048dac2cacd49722cdc56efcda56b008c21 100644 (file)
@@ -67,6 +67,9 @@ public:
     /// signal.
     MODELAPI_EXPORT virtual void setDisplayed(const bool theDisplay);
 
+    /// Returns a GUI name of this step
+    MODELAPI_EXPORT virtual std::string name() = 0;
+
   protected:
     /// This method is called just after creation of the object: it must initialize
     /// all fields, normally initialized in the constructor
@@ -104,6 +107,9 @@ public:
   /// Returns step object
   /// \param theId an id of the object
   virtual std::shared_ptr<ModelAPI_ResultField::ModelAPI_FieldStep> step(int theId) const = 0;
+
+  /// To refresh the steps of a field
+  MODELAPI_EXPORT virtual void updateSteps() = 0;
 };
 
 //! Pointer on feature object
index bfca5d72ccfdada206ce31ddc6637548b2895ea8..b486fcd5ef53e7ba3a374237da117a15dcd522c9 100644 (file)
@@ -158,7 +158,7 @@ void XGUI_SelectionMgr::onObjectBrowserSelection()
             aPrs->dataRange(aMin, aMax);
             aViewer->setColorScaleRange(aMin, aMax);
           }
-          aViewer->setColorScaleTitle("Step");
+          aViewer->setColorScaleTitle(aStep->name().c_str());
           aViewer->setColorScaleShown(true);
         }
       }
index c58f65782a2602b0f377fa6a1b14d3d07314d72c..6de634520b08b91152bd49a87a3373bf3ac2ceec 100644 (file)
@@ -271,15 +271,8 @@ void XGUI_WorkshopListener::
     ObjectPtr aObj = (*aIt);
 
     // Hide the object if it is invalid or concealed one
-    //bool aHide = !aObj->data() || !aObj->data()->isValid() ||
-    //  aObj->isDisabled() || (!aObj->isDisplayed());
-    // TODO: Remove the Hide code as soon as a fields step will become as object
-    bool aHide = false;
-    if (aObj->groupName() == ModelAPI_ResultField::ModelAPI_FieldStep::group())
-      aHide = !aObj->isDisplayed();
-    else
-      aHide = !aObj->data() || !aObj->data()->isValid() ||
-        aObj->isDisabled() || (!aObj->isDisplayed());
+    bool aHide = !aObj->data() || !aObj->data()->isValid() ||
+      aObj->isDisabled() || (!aObj->isDisplayed());
 
     if (!aHide) { // check that this is not hidden result
       ResultPtr aRes = std::dynamic_pointer_cast<ModelAPI_Result>(aObj);