#include <Quantity_Color.hxx>
+#include <QIcon>
#include <QPixmap>
+#include <map>
+
class QWidget;
class QLayout;
class QDoubleSpinBox;
+class QAction;
class ModuleBase_ParamIntSpinBox;
class ModuleBase_ParamSpinBox;
class ModuleBase_IWorkshop;
/// \param theText a new value
MODULEBASE_EXPORT void setSpinText(ModuleBase_ParamIntSpinBox* theSpin, const QString& theText);
+/// Creates an action filled with the parameters
+/// \param theIcon an action icon
+/// \param theText an icon text
+/// \param theParent an action object
+/// \param theReceiver an object to process action triggered signal
+/// \param theMember a slot to process the action triggered signal
+/// \param theToolTip an action tool tip information, if empty the text is used
+/// \param theStatusTip an action status tip information, if empty the text is used
+MODULEBASE_EXPORT QAction* createAction(const QIcon& theIcon, const QString& theText,
+ QObject* theParent, const QObject* theReceiver = 0,
+ const char* theMember = "",
+ const QString& theToolTip = QString(),
+ const QString& theStatusTip = QString());
+
/// Converts the object to the feature or a result and generate information string
/// \param theObj an object
/// \param isUseAttributesInfo a flag whether the attribute values information is used
/// \param theWorkshop to find an attribute for the given shape for attribute reference
/// \param theTemporarily if it is true, do not store and name the added in the data framework
/// It is useful for attribute selection
+MODULEBASE_EXPORT bool hasObject(const AttributePtr& theAttribute, const ObjectPtr& theObject,
+ const std::shared_ptr<GeomAPI_Shape>& theShape,
+ ModuleBase_IWorkshop* theWorkshop,
+ const bool theTemporarily);
+
+/// Set the object to the attribute depending on the attribute type. If it is a list,
+/// the values are appended if they are not in the list yet.
+/// \param theAttribute an attribute where the object and shape are set
+/// \param theObject an object
+/// \param theShape a shape
+/// \param theWorkshop to find an attribute for the given shape for attribute reference
+/// \param theTemporarily if it is true, do not store and name the added in the data framework
+/// \param theCheckIfAttributeHasObject if it is true, the check isInList is called
+/// It is useful for attribute selection
MODULEBASE_EXPORT void setObject(const AttributePtr& theAttribute, const ObjectPtr& theObject,
const std::shared_ptr<GeomAPI_Shape>& theShape,
ModuleBase_IWorkshop* theWorkshop,
- const bool theTemporarily = false);
+ const bool theTemporarily,
+ const bool theCheckIfAttributeHasObject);
/// Returns the shape of the attribute. If the attribute is AttributeRefAttrPtr, the shape is found
/// using current module of the given workshop.
/// \param theMaxLineInPixels a maximum line width in pixels
MODULEBASE_EXPORT QString wrapTextByWords(const QString& theValue, QWidget* theWidget,
int theMaxLineInPixels = 150);
+
+/*!
+ Returns a container of referenced feature to the current object in the object document.
+ \param theObject an object, which will be casted to a feature type
+ \param theRefFeatures an output container
+ */
+void MODULEBASE_EXPORT refsToFeatureInFeatureDocument(const ObjectPtr& theObject,
+ std::set<FeaturePtr>& theRefFeatures);
+
+
+/*!
+ Returns true if the object if a sub child of the feature. The feature is casted to the
+ composite one. If it is possible, the sub object check happens. The method is applyed
+ recursively to the feature subs.
+ \param theObject a candidate to be a sub object
+ \param theFeature a candidate to be a composite feature
+ \return a boolean value
+ */
+bool MODULEBASE_EXPORT isSubOfComposite(const ObjectPtr& theObject, const FeaturePtr& theFeature);
+
+
+/*!
+* Returns true if the result is a sub object of some composite object
+* \param theObject a result object
+* \returns boolean value
+*/
+bool MODULEBASE_EXPORT isSubOfComposite(const ObjectPtr& theObject);
+
+
+/*!
+* Shows a dialog box about references. Ask whether they should be also removed.
+* \param theFeatures a list of features
+* \param theReferences a map of all references to the features
+* \param theParent a parent widget for the question message box
+* \param theReferencesToDelete an out set for references features to be removed
+* \return true if in message box answer is Yes
+*/
+bool MODULEBASE_EXPORT askToDelete(const std::set<FeaturePtr> aFeatures,
+ const std::map<FeaturePtr, std::set<FeaturePtr> >& theReferences,
+ QWidget* theParent,
+ std::set<FeaturePtr>& theReferencesToDelete);
+
+/*!
+* Converts a list of objects to set of corresponded features. If object is result, it is ingored
+* because the feauture only might be removed. But if result is in a parameter group, the feature
+* of this parameter is to be removed
+* \param theObjects a list of objects
+* \param theFeatures an out conteiner of features
+*/
+void MODULEBASE_EXPORT convertToFeatures(const QObjectPtrList& theObjects, std::set<FeaturePtr>& theFeatures);
+
}
#endif