X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_Tools.h;h=b50ec66a1116581d3bef2dfe9b229f183da16085;hb=854902e275b0daab546cbe4517b8bb71badad4a1;hp=6aff1f90f55e9f2bbd3b62a5df056a3fcd69d6fb;hpb=a1cb9ff04bfb45cfd717b853512de158631e4871;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_Tools.h b/src/ModuleBase/ModuleBase_Tools.h index 6aff1f90f..b50ec66a1 100755 --- a/src/ModuleBase/ModuleBase_Tools.h +++ b/src/ModuleBase/ModuleBase_Tools.h @@ -19,11 +19,15 @@ #include +#include #include +#include + class QWidget; class QLayout; class QDoubleSpinBox; +class QAction; class ModuleBase_ParamIntSpinBox; class ModuleBase_ParamSpinBox; class ModuleBase_IWorkshop; @@ -116,6 +120,20 @@ MODULEBASE_EXPORT void setSpinValue(ModuleBase_ParamIntSpinBox* theSpin, int the /// \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 @@ -187,10 +205,25 @@ MODULEBASE_EXPORT std::string findGreedAttribute(ModuleBase_IWorkshop* theWorksh /// \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& 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& 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. @@ -213,6 +246,57 @@ MODULEBASE_EXPORT void blockUpdateViewer(const bool theValue); /// \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& 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 aFeatures, + const std::map >& theReferences, + QWidget* theParent, + std::set& 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& theFeatures); + } #endif