1 // File: ModuleBase_WidgetFeature.h
2 // Created: 25 Apr 2014
3 // Author: Natalia ERMOLAEVA
5 #ifndef ModuleBase_WidgetFeature_H
6 #define ModuleBase_WidgetFeature_H
8 #include <ModuleBase.h>
9 #include "ModuleBase_ModelWidget.h"
12 #include <QStringList>
14 class ModuleBase_WidgetValue;
15 class ModelAPI_Feature;
20 /**\class ModuleBase_WidgetFeature
22 * \brief Custom widget. An abstract class to be redefined to fill with some GUI controls
24 class MODULEBASE_EXPORT ModuleBase_WidgetFeature : public ModuleBase_ModelWidget
29 /// \theParent the parent object
30 /// \theParent the parent object
31 /// \theData the widget configuation. The attribute of the model widget is obtained from
32 ModuleBase_WidgetFeature(QWidget* theParent, const Config_WidgetAPI* theData);
34 virtual ~ModuleBase_WidgetFeature();
36 /// Set the given wrapped value to the current widget
37 /// This value should be processed in the widget according to the needs
38 /// \param theValue the wrapped widget value
39 virtual bool setValue(ModuleBase_WidgetValue* theValue);
41 /// Saves the internal parameters to the given feature
42 /// \param theFeature a model feature to be changed
43 virtual bool storeValue(FeaturePtr theFeature) const;
45 virtual bool restoreValue(FeaturePtr theFeature);
47 /// Returns the internal parent wiget control, that can be shown anywhere
48 /// \returns the widget
49 QWidget* getControl() const;
51 /// Returns list of widget controls
52 /// \return a control list
53 virtual QList<QWidget*> getControls() const;
56 /// Fill the widget values by given point
57 /// \param thePoint the point
58 /// \return the boolean result of the feature set
59 bool setFeature(const FeaturePtr& theFeature);
61 /// Returns current widget feature
62 /// \return the feature
63 const FeaturePtr& feature() const { return myFeature; }
65 /// Returns the widget editor
66 /// \return the editor
67 QLineEdit* editor() const { return myEditor; }
69 /// Returns the possible feature kinds
70 /// \return the list of kinds
71 const QStringList& featureKinds() const { return myFeatureKinds; }
74 FeaturePtr myFeature; ///< the current widget feature
75 QStringList myFeatureKinds; ///< the kinds of possible features
77 QWidget* myContainer; /// the parent top control
78 QLabel* myLabel; /// the editor information label
79 QLineEdit* myEditor; ///< the feature editor to visualize the feature name