X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetFactory.h;h=49fc9a05370b3ce00e71db73ef4bad4006012e54;hb=e0cafd4b246880888d085593c52a073f8892e4a2;hp=93b8443ae6c87f30dd041f61d5ec5277020c9756;hpb=5ba89a77cdb9638a6d298c2aa5233d26576d9ed0;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetFactory.h b/src/ModuleBase/ModuleBase_WidgetFactory.h index 93b8443ae..49fc9a053 100644 --- a/src/ModuleBase/ModuleBase_WidgetFactory.h +++ b/src/ModuleBase/ModuleBase_WidgetFactory.h @@ -1,17 +1,27 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -/* - * ModuleBase_WidgetFactory.h - * - * Created on: Apr 3, 2014 - * Author: sbh - */ - -#ifndef ModuleBase_WidgetFactory_H_ -#define ModuleBase_WidgetFactory_H_ - -#include "ModuleBase.h" -#include "ModuleBase_ModelWidget.h" +// Copyright (C) 2014-2019 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#ifndef MODULEBASE_WIDGETFACTORY_H_ +#define MODULEBASE_WIDGETFACTORY_H_ + +#include +#include #include #include @@ -20,6 +30,7 @@ class QObject; class QWidget; class Config_WidgetAPI; class ModuleBase_IWorkshop; +class ModuleBase_PageBase; /** * \ingroup GUI @@ -32,14 +43,27 @@ class MODULEBASE_EXPORT ModuleBase_WidgetFactory /// Constructor /// \param theXmlRepresentation content of XML file /// \param theWorkshop reference to workshop instance - ModuleBase_WidgetFactory(const std::string& theXmlRepresentation, - ModuleBase_IWorkshop* theWorkshop); + /// \param theAttributePrefix prefix that must be added to the attribute name + ModuleBase_WidgetFactory(const std::string& theXmlRepresentation, + ModuleBase_IWorkshop* theWorkshop, + const std::string theAttributePrefix = ""); virtual ~ModuleBase_WidgetFactory(); /// Creates content widget for property panel - /// \param theParent a parent widget - void createWidget(QWidget* theParent); + /// \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 @@ -47,59 +71,45 @@ class MODULEBASE_EXPORT ModuleBase_WidgetFactory return myModelWidgets; } - protected: - /// check if ModuleBase_Widget has expandable widgets in getControls - bool hasExpandingControls(QWidget* theParent); - /// Create widget by its type - /// \param theType a type - /// \param theParent a parent widget - QWidget* createWidgetByType(const std::string& theType, QWidget* theParent = NULL); - - /// Create a widget of container type - /// \param theType a type - /// \param theParent a parent widget - QWidget* createContainer(const std::string& theType, QWidget* theParent = NULL); - - /// Create label widget - /// \param theParent a parent widget - QWidget* labelControl(QWidget* theParent); + /// 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); - /// Create double spin box widget - /// \param theParent a parent widget - QWidget* doubleSpinBoxControl(QWidget* theParent); + /// 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); - /// Create double value editor widget - /// \param theParent a parent widget - QWidget* doubleValueEditor(QWidget* theParent); + /// Returns widget API from XML + const Config_WidgetAPI* widgetAPI() const { return myWidgetApi; } - /// Create shape selector widget - /// \param theParent a parent widget - QWidget* shapeSelectorControl(QWidget* theParent); - - /// Create boolean input widget - /// \param theParent a parent widget - QWidget* booleanControl(QWidget* theParent); - - /// Create file selector widget - /// \param theParent a parent widget - QWidget* fileSelectorControl(QWidget* theParent); - - /// Create choice widget (combo box) - /// \param theParent a parent widget - QWidget* choiceControl(QWidget* theParent); +protected: + /// check if ModuleBase_Widget has expandable widgets in getControls + bool hasExpandingControls(QWidget* theParent); - /// Create line edit widget + /// Create page by its type + /// \param theType a type /// \param theParent a parent widget - QWidget* lineEditControl(QWidget* theParent); + ModuleBase_PageBase* createPageByType(const std::string& theType, + QWidget* theParent); - /// Create multi selector widget + /// Create widget by its type + /// \param theType a type /// \param theParent a parent widget - QWidget* multiSelectorControl(QWidget* theParent); + ModuleBase_ModelWidget* createWidgetByType(const std::string& theType, + QWidget* theParent = NULL); /// Convert STD string to QT string /// \param theStdString is STD string static QString qs(const std::string& theStdString); + /// 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; @@ -109,9 +119,6 @@ class MODULEBASE_EXPORT ModuleBase_WidgetFactory /// List of created model widgets QList myModelWidgets; - - /// Id of current parent - std::string myParentId; }; #endif /* ModuleBase_WidgetFactory_H_ */