X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetFactory.h;h=ffc14fe30302c6db69f393b0fe75ecbf862a436a;hb=49d5a27258260087aad5e7ca30d6863e08a186d1;hp=bf765824f95dcdbc4a106bd1e4e0ad761f4738f6;hpb=38718871ed5bbaacc7601df64ff137014d195bd3;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetFactory.h b/src/ModuleBase/ModuleBase_WidgetFactory.h index bf765824f..ffc14fe30 100644 --- a/src/ModuleBase/ModuleBase_WidgetFactory.h +++ b/src/ModuleBase/ModuleBase_WidgetFactory.h @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + /* * ModuleBase_WidgetFactory.h * @@ -5,8 +7,8 @@ * Author: sbh */ -#ifndef ModuleBase_WidgetFactory_H_ -#define ModuleBase_WidgetFactory_H_ +#ifndef MODULEBASE_WIDGETFACTORY_H_ +#define MODULEBASE_WIDGETFACTORY_H_ #include #include @@ -17,36 +19,93 @@ class QObject; class QWidget; class Config_WidgetAPI; -class ModuleBase_Operation; +class ModuleBase_IWorkshop; +class ModuleBase_PageBase; +/** +* \ingroup GUI +* A class for creation of widgets instances in for property panel using XML deskription of +* a feature +*/ class MODULEBASE_EXPORT ModuleBase_WidgetFactory { -public: - ModuleBase_WidgetFactory(ModuleBase_Operation*); + public: + /// Constructor + /// \param theXmlRepresentation content of XML file + /// \param theWorkshop reference to workshop instance + ModuleBase_WidgetFactory(const std::string& theXmlRepresentation, + ModuleBase_IWorkshop* theWorkshop); virtual ~ModuleBase_WidgetFactory(); - void createWidget(QWidget* theParent); + /// Creates content widget for property panel + /// \param thePage a parent page + /// \param alignToTop align to top flag (true by default) + void createWidget(ModuleBase_PageBase* thePage, bool alignToTop = true); + + /// Creates property panel content for the feature + /// \param thePage a parent page + /// \param theFeature a feature to fill the panel + void createPanel(ModuleBase_PageBase* thePage, const FeaturePtr& theFeature); + + /// Creates one widget for property panel for the widget with given index + /// \param thePage a parent widget + /// \param theWidgetId a widget index + void createWidget(ModuleBase_PageBase* thePage, + const std::string& theWidgetId); + /// Returns list of model widgets QList getModelWidgets() const { return myModelWidgets; } + /// Returns the value of the title key from XML definition of the attribute in the feature + /// \param theAttributeId a value of a kind of the attribute under the feature + /// \param theTitle the result title + void getAttributeTitle(const std::string& theAttributeId, + std::string& theTitle); + + /// Returns the identifier of the first found attribute where greed field value is set and true + /// \param theAttributeId an outpup parameter with attribute + void getGreedAttribute(std::string& theAttributeId); + + /// Returns widget API from XML + const Config_WidgetAPI* widgetAPI() const { return myWidgetApi; } + protected: - //Widgets - QWidget* createWidgetByType(const std::string& theType, QWidget* theParent = NULL); - QWidget* labelControl(QWidget* theParent); - QWidget* doubleSpinBoxControl(); - QWidget* pointSelectorControl(QWidget* theParent); - QWidget* createContainer(const std::string& theType, QWidget* theParent = NULL); + /// check if ModuleBase_Widget has expandable widgets in getControls + bool hasExpandingControls(QWidget* theParent); + + /// Create page by its type + /// \param theType a type + /// \param theParent a parent widget + ModuleBase_PageBase* createPageByType(const std::string& theType, + QWidget* theParent); + + /// Create widget by its type + /// \param theType a type + /// \param theParent a parent widget + ModuleBase_ModelWidget* createWidgetByType(const std::string& theType, + QWidget* theParent = NULL); - bool connectWidget(QObject*, const QString&); - QString qs(const std::string& theStdString) const; + /// Convert STD string to QT string + /// \param theStdString is STD string + static QString qs(const std::string& theStdString); -private: + /// It updates internal config api to point in the structure to given id of widget + /// The method is recusive and it stops when the found flag is true + /// \param theWidgetId a widget id key value + /// \param theFound a flag about found windget and recursive search should be stopped + void moveToWidgetId(const std::string& theWidgetId, bool& theFound); + + private: + /// API object for XML reading Config_WidgetAPI* myWidgetApi; - ModuleBase_Operation* myOperation; + /// Reference to workshop + ModuleBase_IWorkshop* myWorkshop; + + /// List of created model widgets QList myModelWidgets; };