]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Provide Min/Max for properties with Double Spin control
authorvsv <vsv@opencascade.com>
Tue, 9 Oct 2018 16:15:38 +0000 (19:15 +0300)
committervsv <vsv@opencascade.com>
Tue, 9 Oct 2018 16:15:38 +0000 (19:15 +0300)
src/Config/Config_Prop.h
src/Config/Config_PropManager.cpp
src/Config/Config_PropManager.h
src/ConstructionPlugin/ConstructionPlugin_Plugin.cpp
src/ModuleBase/ModuleBase_Preferences.cpp

index 5411766e4237f7e9e5593096879319346c1f96ea..564c0a2d00cadb05a9d9b647015ac8db17d0100a 100644 (file)
@@ -73,7 +73,9 @@ class Config_Prop
    * \param theDefaultValue - default value of the property. This is an initial property value
    */
   Config_Prop(const std::string& theSection, const std::string& theName,
-              const std::string& theTitle, PropType theType, const std::string& theDefaultValue)
+              const std::string& theTitle, PropType theType,
+              const std::string& theDefaultValue,
+              const std::string& theMin, const std::string& theMax)
   {
     mySection = theSection;
     myName = theName;
@@ -81,6 +83,8 @@ class Config_Prop
     myType = theType;
     myValue = theDefaultValue;
     myDefaultValue = theDefaultValue;
+    myMin = theMin;
+    myMax = theMax;
   }
 
   /// Get name of section
@@ -133,6 +137,20 @@ class Config_Prop
     return (mySection == theProp->section()) && (myName == theProp->name());
   }
 
+  /// Returns minimal value
+  std::string min() const { return myMin; }
+
+  void setMin(const std::string& theMin) {
+    myMin = theMin;
+  }
+
+  /// Returns maximal value
+  std::string max() const { return myMax; }
+
+  void setMax(const std::string& theMax) {
+    myMax = theMax;
+  }
+
  private:
   std::string mySection; ///< Name of section
   std::string myName; ///< Name of property
@@ -140,6 +158,8 @@ class Config_Prop
   PropType myType; ///< Type of property
   std::string myValue; // Value in string format
   std::string myDefaultValue; // Default value
+  std::string myMin; // Minimal value
+  std::string myMax; // Maximal value
 };
 
 typedef std::list<Config_Prop*> Config_Properties;
index 25745a01d1131d66652c825e451639467f5a7fde..4f6530dd38ee216084b6a5e8f87d2b70cb6d22f8 100644 (file)
@@ -31,7 +31,9 @@ Config_Prop* Config_PropManager::registerProp(const std::string& theSection,
                                               const std::string& theName,
                                               const std::string& theTitle,
                                               Config_Prop::PropType theType,
-                                              const std::string& theDefaultValue)
+                                              const std::string& theDefaultValue,
+                                              const std::string& theMin,
+                                              const std::string& theMax)
 {
   Config_Prop* aProp = findProp(theSection, theName);
 
@@ -46,9 +48,12 @@ Config_Prop* Config_PropManager::registerProp(const std::string& theSection,
       aProp->setType(theType);
       aProp->setTitle(theTitle);
     }
+    aProp->setMin(theMin);
+    aProp->setMax(theMax);
   }
   else {
-    aProp = new Config_Prop(theSection, theName, theTitle, theType, theDefaultValue);
+    aProp =
+      new Config_Prop(theSection, theName, theTitle, theType, theDefaultValue, theMin, theMax);
     myProps.push_back(aProp);
   }
   return aProp;
index 60e32f58967e6fbe46575f109508b2d0141e04e6..00dd75b738ef4162cd9c7ed09df20f9b1e9c34e1 100644 (file)
@@ -44,19 +44,27 @@ class Config_PropManager
    * \param theTitle - title of the value.
    * \param theType - type of the value.
    * \param theDefValue - default and initial value of the property
+   * \param theMin - minimal value
+   * \param theMax - minimal value
    * Returns True if the property succesfully registered
    */
   CONFIG_EXPORT static Config_Prop* registerProp(const std::string& theSection,
     const std::string& theName,
     const std::string& theTitle, Config_Prop::PropType theType,
-    const std::string& theDefValue = "");
+    const std::string& theDefValue = "",
+    const std::string& theMin = "",
+    const std::string& theMax = "");
+
   //! Finds property in the given section by the given name, if property not found returns NULL
   CONFIG_EXPORT static Config_Prop* findProp(
     const std::string& theSection, const std::string& theName);
+
   //! Returns std::list of all existing properies
   CONFIG_EXPORT static Config_Properties getProperties();
+
   //! Returns list of registered section names.
   CONFIG_EXPORT static std::list<std::string> getSections();
+
   //! Returns list of properties by its owner and section.
   CONFIG_EXPORT static Config_Properties getProperties(const std::string& theSection);
 
@@ -74,7 +82,8 @@ class Config_PropManager
                                    const std::string& theName);
   //! Returns boolean by given section and name
   CONFIG_EXPORT static bool boolean(const std::string& theSection,
-                                   const std::string& theName);
+                                    const std::string& theName);
+
   //! Returns convertion of the string to double value. Temporary changes locale to process
   //! values contained "," or "." separator.
   //! \param theDouble a value to be converted
index 3eaecc591c14106c2b7948e6f3e7ee54b2f8bdca..c417c11d843a029beaa42af75f8fa706388f4e33 100644 (file)
@@ -56,7 +56,7 @@ ConstructionPlugin_Plugin::ConstructionPlugin_Plugin()
                               new ConstructionPlugin_ValidatorPointThreeNonParallelPlanes());
 
   Config_PropManager::registerProp(SKETCH_TAB_NAME, "planes_size", "Size", Config_Prop::DblSpin,
-                                   PLANE_SIZE);
+                                   PLANE_SIZE, "0", "1000");
   Config_PropManager::registerProp(SKETCH_TAB_NAME, "planes_thickness", "Thickness",
     Config_Prop::IntSpin, SKETCH_WIDTH);
   Config_PropManager::registerProp(SKETCH_TAB_NAME, "rotate_to_plane",
index c7da97099b5d9b6e44d98242c6f7396bdb69fba0..e53ec5088b4bacf67ab1935268734f1c55f6813d 100644 (file)
@@ -188,6 +188,16 @@ void ModuleBase_Preferences::createCustomPage(ModuleBase_IPrefMgr* thePref, int
         if(aProp->type() == Config_Prop::Directory) {
           thePref->setItemProperty("path_type", Qtx::PT_Directory, anId);
         }
+        if (aPrefType == SUIT_PreferenceMgr::DblSpin) {
+          if (aProp->min() != "") {
+            double aMin = QString(aProp->min().c_str()).toDouble();
+            thePref->setItemProperty("min", aMin, anId);
+          }
+          if (aProp->max() != "") {
+            double aMax = QString(aProp->max().c_str()).toDouble();
+            thePref->setItemProperty("max", aMax, anId);
+          }
+        }
       }
     }
   }