]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/ModuleBase/ModuleBase_WidgetCreatorFactory.h
Salome HOME
Update classes documentation
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetCreatorFactory.h
index 98f4d211d1b514d8f5d6f83e70766e6da8f1b0b0..e5ffb33698a8c4d93fced9467a81684708bcbe26 100755 (executable)
@@ -16,6 +16,8 @@
 
 #include <ModuleBase_IWidgetCreator.h>
 
+#include <ModelAPI_Feature.h>
+
 class ModuleBase_ModelWidget;
 class ModuleBase_PageBase;
 class ModuleBase_IWorkshop;
@@ -30,7 +32,7 @@ class QWidget;
 class MODULEBASE_EXPORT ModuleBase_WidgetCreatorFactory
 {
  public:
-  // Returns an singular instance of the class if it exists or create it
+  /// Returns an singular instance of the class if it exists or create it
   static std::shared_ptr<ModuleBase_WidgetCreatorFactory> get();
 
   /// Destructor
@@ -40,36 +42,56 @@ class MODULEBASE_EXPORT ModuleBase_WidgetCreatorFactory
   /// \param theCreator a new widget creator
   void registerCreator(const WidgetCreatorPtr& theCreator);
 
+  /// Returns true if there is a creator, which can make a panel by the type
+  /// \param theType a type
+  /// \return a boolean value
+  bool hasPanelWidget(const std::string& theType);
+
+  /// Create panel by its type
+  /// \param theType a type
+  /// \param theParent a parent widget
+  /// \param theFeature a feature to fill the panel
+  /// \return a created panel or null
+  QWidget* createPanelByType(const std::string& theType, QWidget* theParent,
+                             const FeaturePtr& theFeature);
+
   /// Returns true if there is a creator, which can make a page by the type
   /// \param theType a type
+  /// \return a boolean value
   bool hasPageWidget(const std::string& theType);
 
   /// Create page by its type
   /// \param theType a type
   /// \param theParent a parent widget
+  /// \param theWidgetApi the widget configuration. The attribute of the model widget is obtained from XML
+  /// \return a created page or null
   ModuleBase_PageBase* createPageByType(const std::string& theType,
                                         QWidget* theParent,
-                                        Config_WidgetAPI* theWidgetApi,
-                                        std::string theParentId);
+                                        Config_WidgetAPI* theWidgetApi);
 
   /// Create widget by its type
   /// \param theType a type
   /// \param theParent a parent widget
+  /// \param theWidgetApi the widget configuration. The attribute of the model widget is obtained from XML
+  /// \param theWorkshop a workshop object instance
+  /// \return a created widget or null
   ModuleBase_ModelWidget* createWidgetByType(const std::string& theType,
                                              QWidget* theParent,
                                              Config_WidgetAPI* theWidgetApi,
-                                             std::string theParentId,
                                              ModuleBase_IWorkshop* theWorkshop);
 
 private:
   /// Constructor is hidden
   ModuleBase_WidgetCreatorFactory();
 
-  /// Map of widget type in XML to creator
-  QMap<std::string, WidgetCreatorPtr> myCreators;
+  /// Map of widget panel in XML to creator
+  QMap<std::string, WidgetCreatorPtr> myPanelToCreator;
 
   /// Map of widget page in XML to creator
   QMap<std::string, WidgetCreatorPtr> myPageToCreator;
+
+  /// Map of widget type in XML to creator
+  QMap<std::string, WidgetCreatorPtr> myCreators;
 };
 
 typedef std::shared_ptr<ModuleBase_WidgetCreatorFactory> WidgetCreatorFactoryPtr;