+ /// 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);
+
+ /// Set current shape type for selection
+ void setCurrentShapeType(const TopAbs_ShapeEnum theShapeType);
+
+ /// Return the attribute values wrapped in a list of viewer presentations
+ /// \return a list of viewer presentations, which contains an attribute result and
+ /// a shape. If the attribute do not uses the shape, it is empty
+ virtual QList<ModuleBase_ViewerPrs> getAttributeSelection() const;
+
+ /// Fills the list control by the attribute values
+ void updateSelectionList();
+
+ /// Converts the XML defined type choice to the validator type
+ /// For example, the "Edges" is converted to "edge"
+ std::string validatorType(const QString& theType) const;
+
+protected:
+ /// Returns attribute indices selected in the widget selection list
+ /// \param theIndices a list of indices
+ void getSelectedAttributeIndices(std::set<int>& theIndices);
+
+ /// Gets the feature attribute and fill a list of viewer presentation for the attribute
+ /// indices. If the the container of indices is empty, it returns all objects.
+ /// \param theAttributeIds indices in attribute list to be returned
+ /// \param theValues the result presentations, filled with object and shape of an attribute item
+ void convertIndicesToViewerSelection(std::set<int> theAttributeIds,
+ QList<ModuleBase_ViewerPrs>& theValues) const;
+
+ /// Iterates throgh the model attribute list and remove elements which do not present in the list
+ /// \param theValues the wrapped selection values
+ virtual void removeUnusedAttributeObjects(QList<ModuleBase_ViewerPrs>& theValues);
+
+ /// Converts viewer presentation selection list to objects and shapes map
+ /// \param theValues the wrapped selection values
+ /// \return selection list
+ std::map<ObjectPtr, std::set<GeomShapePtr> > convertSelection
+ (QList<ModuleBase_ViewerPrs>& theValues);
+
+ /// Returns true if the object and shape present in the container
+ /// \param theObject a model object, a set of shapes is searched by it
+ /// \param theShape a shape to be in the set of the object shapes
+ /// \param theGeomSelection a map built on selection
+ /// \return boolean result
+ static bool findInSelection(const ObjectPtr& theObject,
+ const GeomShapePtr& theShape,
+ const std::map<ObjectPtr, std::set<GeomShapePtr> >& theGeomSelection);
+
+protected:
+ /// List control
+ QListWidget* myListControl;
+
+ /// Combobox of types
+ QComboBox* myTypeCombo;