X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetCreatorFactory.h;h=cb99f708445bc4dd4c5a18554e46ee6d09ce876a;hb=423f6b0a08a86d5e47115b87603cddeae4468b49;hp=1c6991a5a44a405543af9334774ee4e75b7ab44f;hpb=935d92397da8acd3bc317a6318572b508c118dc3;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetCreatorFactory.h b/src/ModuleBase/ModuleBase_WidgetCreatorFactory.h index 1c6991a5a..cb99f7084 100755 --- a/src/ModuleBase/ModuleBase_WidgetCreatorFactory.h +++ b/src/ModuleBase/ModuleBase_WidgetCreatorFactory.h @@ -16,6 +16,8 @@ #include +#include + class ModuleBase_ModelWidget; class ModuleBase_PageBase; class ModuleBase_IWorkshop; @@ -24,29 +26,47 @@ class QWidget; /** * \ingroup GUI -* A class for creation of widgets instances in for property panel using XML deskription of +* A class for creation of widgets instances in for property panel using XML deskription of * a feature */ 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 get(); /// Destructor virtual ~ModuleBase_WidgetCreatorFactory(); - /// The creator is added to the internal container to be used when the createWidgetByType is called + /// The creator is added to the internal container + /// to be used when the createWidgetByType is called /// \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); @@ -54,6 +74,10 @@ class MODULEBASE_EXPORT ModuleBase_WidgetCreatorFactory /// 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, @@ -63,11 +87,14 @@ private: /// Constructor is hidden ModuleBase_WidgetCreatorFactory(); - /// Map of widget type in XML to creator - QMap myCreators; + /// Map of widget panel in XML to creator + QMap myPanelToCreator; /// Map of widget page in XML to creator QMap myPageToCreator; + + /// Map of widget type in XML to creator + QMap myCreators; }; typedef std::shared_ptr WidgetCreatorFactoryPtr;