]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
The "concealment" attribute added
authorsbh <sergey.belash@opencascade.com>
Mon, 27 Oct 2014 13:16:08 +0000 (16:16 +0300)
committersbh <sergey.belash@opencascade.com>
Mon, 27 Oct 2014 13:16:08 +0000 (16:16 +0300)
src/Config/Config_FeatureReader.cpp
src/Config/Config_Keywords.h
src/FeaturesPlugin/extrusion_widget.xml
src/Model/Model_Validator.cpp
src/Model/Model_Validator.h
src/ModelAPI/ModelAPI_Validator.h
src/ModuleBase/ModuleBase_ModelWidget.cpp
src/ModuleBase/ModuleBase_ModelWidget.h
src/ModuleBase/ModuleBase_WidgetFactory.cpp
src/ModuleBase/ModuleBase_WidgetFactory.h

index 1f7a65b2dcbc366f278e94c9c37b4d09da2d57ae..5c4ffba8e2f0650a41d6995b9b223073ace77022 100644 (file)
@@ -92,7 +92,7 @@ void Config_FeatureReader::fillFeature(xmlNodePtr theNode,
 
 bool Config_FeatureReader::isInternalFeature(xmlNodePtr theNode)
 {
-  std::string prop = getProperty(theNode, FEATURE_INTERNAL);
+  std::string prop = getProperty(theNode, ATTRIBUTE_INTERNAL);
   std::transform(prop.begin(), prop.end(), prop.begin(), ::tolower);
   if (prop.empty() || prop == "false" || prop == "0") {
     return false;
index 5a4eb46831dba5b22024708dbf6a753c6f30ae5e..46338306b780427c9477f28978e747a0769b3621 100644 (file)
@@ -50,8 +50,10 @@ const static char* FEATURE_ICON = "icon";
 const static char* FEATURE_TEXT = "title";
 const static char* FEATURE_KEYSEQUENCE = "keysequence";
 const static char* FEATURE_NESTED = "nested";
-const static char* FEATURE_INTERNAL = "internal";
-const static char* FEATURE_OBLIGATORY = "obligatory";
+
+const static char* ATTRIBUTE_INTERNAL = "internal";
+const static char* ATTRIBUTE_OBLIGATORY = "obligatory";
+const static char* ATTRIBUTE_CONCEALMENT = "concealment";
 // TODO: Rename
 const static char* PREVIOUS_FEATURE_PARAM = "previous_feature_param";
 const static char* ANY_WDG_TOOLTIP = FEATURE_TOOLTIP;
index c7c5f4bdd90bebae461edbd3873fae7ace5471a5..4158caaa9ccfa9530086a189f0835978c6b94cfd 100644 (file)
@@ -6,6 +6,7 @@
     activate="true"
     shape_types="face"
     use_subshapes="true"
+    concealment="true"
   />
   <doublevalue id="extrusion_size" label="Size" min="0" step="1.0" default="1" icon=":icons/dimension_v.png" tooltip="Set size of extrusion">
     <validator id="GeomValidators_Positive"/>
index 987db716ea98142151bf654ad24eda776f23bb18..d1adbbbe92d012f6cb37a6273a15b8354a0b8abd 100644 (file)
@@ -211,8 +211,7 @@ bool Model_ValidatorsFactory::validate(const boost::shared_ptr<ModelAPI_Feature>
   return true;
 }
 
-void Model_ValidatorsFactory::registerNotObligatory(
-  std::string theFeature, std::string theAttribute) 
+void Model_ValidatorsFactory::registerNotObligatory(std::string theFeature, std::string theAttribute)
 {
   std::map<std::string, ModelAPI_Validator*>::const_iterator it = myIDs.find(kDefaultId);
   if (it != myIDs.end()) {
@@ -222,3 +221,10 @@ void Model_ValidatorsFactory::registerNotObligatory(
     }
   }
 }
+
+void Model_ValidatorsFactory::registerConcealment(std::string theFeature, std::string theAttribute)
+{
+
+}
+
+
index 38d2d7bf5bca0b60b539bb4499000e0b7824c03c..cfaeb89c5ff1369c9cb184385cb82228b2869d50 100644 (file)
@@ -72,6 +72,10 @@ class Model_ValidatorsFactory : public ModelAPI_ValidatorsFactory
   /// so, it is not needed for the standard validation mechanism
   virtual void registerNotObligatory(std::string theFeature, std::string theAttribute);
 
+  /// register that this attribute conceals in the object browser
+  /// all referenced features after execution
+  virtual void registerConcealment(std::string theFeature, std::string theAttribute);
+
 protected:
   void addDefaultValidators(std::list<ModelAPI_Validator*>& theValidators) const;
   /// Get instance from Session
index ea47856f4afd2b34b2a70191c165443d2d8be3f0..940be4c4d1b879039859579c5bb2bcda33d697be 100644 (file)
@@ -83,6 +83,10 @@ class MODELAPI_EXPORT ModelAPI_ValidatorsFactory
   /// so, it is not needed for the standard validation mechanism
   virtual void registerNotObligatory(std::string theFeature, std::string theAttribute) = 0;
 
+  /// register that this attribute conceals in the object browser
+  /// all referenced features after execution
+  virtual void registerConcealment(std::string theFeature, std::string theAttribute) = 0;
+
  protected:
   /// Get instance from Session
   ModelAPI_ValidatorsFactory()
index dde892d224818d1606bbbf003c74fb512e192081..5a6ba6e1eb5b8032feef6a283c3cc5e09b16c8c1 100644 (file)
@@ -26,7 +26,6 @@ ModuleBase_ModelWidget::ModuleBase_ModelWidget(QWidget* theParent, const Config_
       myParentId(theParentId)
 {
   myIsComputedDefault = false;
-  myIsObligatory = theData ? theData->getBooleanAttribute(FEATURE_OBLIGATORY, true) : true;
   myAttributeID = theData ? theData->widgetId() : "";
 }
 
index 48a650e325ac23ca16c74a8ec4f932f672039ca5..25c0bf2469a3d34fc077546ae0ce56ec108a5b88 100644 (file)
@@ -48,10 +48,6 @@ Q_OBJECT
   /// on operation's execute, like radius for circle's constraint (can not be zero)
   bool isComputedDefault() { return myIsComputedDefault; }
 
-  /// Returns false for non-obligatory widgets which are
-  /// valid even if they are not initialized
-  bool isObligatory() { return myIsObligatory; }
-
   /// Defines if it is supposed that the widget should interact with the viewer.
   virtual bool isViewerSelector() { return false; }
 
@@ -145,8 +141,7 @@ signals:
   FeaturePtr myFeature;
 
   bool myIsComputedDefault; /// Value should be computed on execute,
-  /// like radius for circle's constraint (can not be zero)
-  bool myIsObligatory;      /// Non-obligatory widget is valid even if it is not initialized
+                            /// like radius for circle's constraint (can not be zero)
 };
 
 #endif
index 057c4d5d3b19d3aff33415718fd537ae24d826e8..cbe7503a8e7a43833324fc3c275308d389ebf3db 100644 (file)
@@ -71,7 +71,7 @@ void ModuleBase_WidgetFactory::createWidget(QWidget* theParent)
     //Create a widget (doublevalue, groupbox, toolbox, etc.
     QWidget* aWidget = createWidgetByType(aWdgType, theParent);
     if (aWidget) {
-      if (!myWidgetApi->getBooleanAttribute(FEATURE_INTERNAL, false)) {
+      if (!myWidgetApi->getBooleanAttribute(ATTRIBUTE_INTERNAL, false)) {
         aWidgetLay->addWidget(aWidget);
       } else {
         aWidget->setVisible(false);
@@ -121,6 +121,25 @@ QWidget* ModuleBase_WidgetFactory::labelControl(QWidget* theParent)
   return result;
 }
 
+void ModuleBase_WidgetFactory::processAttributes()
+{
+  // register that this attribute in feature is not obligatory for the feature execution
+  // so, it is not needed for the standard validation mechanism
+  bool isObligatory = true;
+  bool isConcealment = false;
+  if( myWidgetApi ){
+    isObligatory = myWidgetApi->getBooleanAttribute(ATTRIBUTE_OBLIGATORY, true);
+    isConcealment = myWidgetApi->getBooleanAttribute(ATTRIBUTE_CONCEALMENT, false);
+  }
+  boost::shared_ptr<ModelAPI_Session> aSession = ModelAPI_Session::get();
+  if (!isObligatory) {
+    aSession->validators()->registerNotObligatory(myParentId, myWidgetApi->widgetId());
+  }
+  if(isConcealment) {
+    aSession->validators()->registerConcealment(myParentId, myWidgetApi->widgetId());
+  }
+}
+
 QWidget* ModuleBase_WidgetFactory::createWidgetByType(const std::string& theType,
                                                       QWidget* theParent)
 {
@@ -174,14 +193,7 @@ QWidget* ModuleBase_WidgetFactory::createWidgetByType(const std::string& theType
 #endif
   }
   if (result) {
-    // register that this attribute in feature is not obligatory for the feature execution
-    // so, it is not needed for the standard validation mechanism
-    bool isObligatory = 
-      myWidgetApi ? myWidgetApi->getBooleanAttribute(FEATURE_OBLIGATORY, true) : true;
-    if (!isObligatory) {
-      ModelAPI_Session::get()->validators()->registerNotObligatory(
-        myParentId, myWidgetApi->widgetId());
-    }
+    processAttributes();
   }
 
   return result;
index fd267d41801bd144d92aa5841b20f71ece86af69..43b8208b6596d3912f436ea914ded46e337e8ab5 100644 (file)
@@ -53,6 +53,7 @@ class MODULEBASE_EXPORT ModuleBase_WidgetFactory
 
 
   QString qs(const std::string& theStdString) const;
+  void processAttributes();
 
  private:
   Config_WidgetAPI* myWidgetApi;