#define ModuleBase_WidgetShapeSelector_H
#include "ModuleBase.h"
-#include "ModuleBase_ModelWidget.h"
+#include "ModuleBase_WidgetValidated.h"
#include "ModuleBase_ViewerFilters.h"
+#include <ModuleBase_ViewerPrs.h>
#include <ModelAPI_Object.h>
+#include <ModelAPI_Attribute.h>
#include <GeomAPI_Shape.h>
#include <TopAbs_ShapeEnum.hxx>
* which corresponds to ModelAPI_ResultConstruction object type
* - concealment - hide or not hide selected object after operation
*/
-class MODULEBASE_EXPORT ModuleBase_WidgetShapeSelector : public ModuleBase_ModelWidget
+class MODULEBASE_EXPORT ModuleBase_WidgetShapeSelector : public ModuleBase_WidgetValidated
{
Q_OBJECT
public:
/// \return a control list
virtual QList<QWidget*> getControls() const;
- /// Returns currently selected data object
- ObjectPtr selectedFeature() const
- {
- return mySelectedObject;
- }
-
- /// Set the given wrapped value to the current widget
- /// This value should be processed in the widget according to the needs
- /// \param theValue the wrapped widget value
- virtual bool setSelection(ModuleBase_ViewerPrs theValue);
-
+ /// Fills the attribute with the value of the selected owner
+ /// \param theOwner a selected owner
+ virtual bool setSelectionCustom(const ModuleBase_ViewerPrs& thePrs);
/// The methiod called when widget is deactivated
virtual void deactivate();
-
public slots:
/// Activate or deactivate selection
protected:
/// Saves the internal parameters to the given feature
/// \return True in success
- virtual bool storeValue() const;
+ virtual bool storeValueCustom() const;
/// The methiod called when widget is activated
virtual void activateCustom();
+ /// Creates a backup of the current values of the attribute
+ /// It should be realized in the specific widget because of different
+ /// parameters of the current attribute
+ virtual void storeAttributeValue();
+
+ /// Creates a backup of the current values of the attribute
+ /// It should be realized in the specific widget because of different
+ /// parameters of the current attribute
+ /// \param theValid a boolean flag, if restore happens for valid parameters
+ virtual void restoreAttributeValue(const bool theValid);
+
/// Computes and updates name of selected object in the widget
void updateSelectionName();
/// \param theShape a shape
virtual bool acceptSubShape(std::shared_ptr<GeomAPI_Shape> theShape) const;
- /// Returns true if selected object corresponds to requested Object type
- /// Thid method is used in any selection mode
- /// \param theObject an object
- virtual bool acceptObjectType(const ObjectPtr theObject) const;
-
-
- // Set the given object as a value of the widget
- /// \param theObj an object
- /// \param theShape a shape
- void setObject(ObjectPtr theObj, std::shared_ptr<GeomAPI_Shape> theShape = std::shared_ptr<GeomAPI_Shape>());
-
- /// Check the selected with validators if installed
- /// \param theObj the object for checking
- /// \param theShape the shape for checking
- virtual bool isValid(ObjectPtr theObj, std::shared_ptr<GeomAPI_Shape> theShape);
+ // Get the shape from the attribute it the attribute contain a shape, e.g. selection attribute
+ /// \return a shape
+ GeomShapePtr getShape() const;
/// Clear attribute
void clearAttribute();
+ /// Store the values to the model attribute of the widget. It casts this attribute to
+ /// the specific type and set the given values
+ /// \param theSelectedObject an object
+ /// \param theShape a selected shape, which is used in the selection attribute
+ /// \return true if it is succeed
+ virtual bool setObject(ObjectPtr theSelectedObject, GeomShapePtr theShape);
+
//----------- Class members -------------
- protected:
+ protected:
/// Label of the widget
QLabel* myLabel;
/// Reference to workshop
ModuleBase_IWorkshop* myWorkshop;
- /// Pointer to selected object
- ObjectPtr mySelectedObject;
-
- /// Pointer to selected shape
- GeomShapePtr myShape;
-
/// List of accepting shapes types
QStringList myShapeTypes;
- /// List of accepting object types
- QStringList myObjectTypes;
-
/// Active/inactive flag
bool myIsActive;
- /// Filter by objects types
- Handle(ModuleBase_ObjectTypesFilter) myObjTypeFilter;
+ /// backup parameters of the model attribute. The class processes three types of attribute:
+ /// Reference, RefAttr and Selection. Depending on the attribute type, only the attribute parameter
+ /// values are reserved in the backup
+ /// An attribute object
+ ObjectPtr myObject;
+ /// An attribute shape
+ GeomShapePtr myShape;
+ /// A reference of the attribute
+ AttributePtr myRefAttribute;
+ /// A boolean value whether refAttr uses reference of object
+ bool myIsObject;
};
#endif