Salome HOME
Extension of Parameters interface: to set/get double values of results
[modules/shaper.git] / src / ModuleBase / ModuleBase_IWidgetCreator.h
index 91a076d447335fb4be8fad3ec1c390a3971d5f98..b3018f044aa2f9fd30f0dfa69ebcd4bf9f537ab3 100755 (executable)
@@ -5,6 +5,8 @@
 
 #include "ModuleBase.h"
 
+#include "ModelAPI_Feature.h"
+
 #include <set>
 #include <string>
 #include <memory>
@@ -31,29 +33,48 @@ public:
   ~ModuleBase_IWidgetCreator();
 
   /// Returns a container of possible page types, which this creator can process
-  /// \returns types
-  virtual const std::set<std::string>& pageTypes() = 0;
+  /// The default implementation is empty
+  /// \param theTypes a list of type names
+  virtual void panelTypes(std::set<std::string>& theTypes) {}
+
+  /// Returns a container of possible page types, which this creator can process
+  /// The default implementation is empty
+  /// \param theTypes a list of type names
+  virtual void pageTypes(std::set<std::string>& theTypes) {}
 
   /// Returns a container of possible widget types, which this creator can process
-  /// \returns types
-  virtual const std::set<std::string>& widgetTypes() = 0;
+  /// \param theTypes a list of type names
+  virtual void widgetTypes(std::set<std::string>& theTypes) {}
+
+  /// Create panel control by its type.
+  /// The default implementation is empty
+  /// \param theType a panel type
+  /// \param theParent a parent widget
+  /// \param theFeature a feature modified in the panel
+  /// \return created widget or null
+  virtual QWidget* createPanelByType(const std::string& theType,
+                                     QWidget* theParent,
+                                     const FeaturePtr& theFeature);
 
   /// Create page by its type
+  /// The default implementation is empty
   /// \param theType a type
   /// \param theParent a parent widget
+  /// \param theWidgetApi a low-level API for reading xml definitions of widgets
   virtual ModuleBase_PageBase* createPageByType(const std::string& theType,
                                                 QWidget* theParent,
-                                                Config_WidgetAPI* theWidgetApi,
-                                                std::string theParentId) = 0;
+                                                Config_WidgetAPI* theWidgetApi);
 
   /// Create widget by its type
-   /// \param theType a type
-   /// \param theParent a parent widget
+  /// The default implementation is empty
+  /// \param theType a type
+  /// \param theParent a parent widget
+  /// \param theWidgetApi a low-level API for reading xml definitions of widgets
+  /// \param theWorkshop a workshop class instance
   virtual ModuleBase_ModelWidget* createWidgetByType(const std::string& theType,
                                                      QWidget* theParent,
                                                      Config_WidgetAPI* theWidgetApi,
-                                                     std::string theParentId,
-                                                     ModuleBase_IWorkshop* theWorkshop) = 0;
+                                                     ModuleBase_IWorkshop* theWorkshop);
 };
 
 typedef std::shared_ptr<ModuleBase_IWidgetCreator> WidgetCreatorPtr;