X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_OperationSketchBase.cpp;h=e8f081e4d581d19beab5a3cf4f46dc48dd91e42d;hb=e30796dab1aa68c01201b2b89d4292d3fcbbc4d4;hp=c5b70b0e00d49e2615606c9a9b790d522b6685bb;hpb=366bd43e7fec56e20a6588f5e0522a154a921e96;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_OperationSketchBase.cpp b/src/PartSet/PartSet_OperationSketchBase.cpp index c5b70b0e0..e8f081e4d 100644 --- a/src/PartSet/PartSet_OperationSketchBase.cpp +++ b/src/PartSet/PartSet_OperationSketchBase.cpp @@ -1,6 +1,19 @@ +// File: PartSet_OperationSketchBase.cpp +// Created: 20 Apr 2014 +// Author: Natalia ERMOLAEVA + #include +#include +#include #include +#include +#include +#include + +#include +#include +#include #ifdef _DEBUG #include @@ -8,39 +21,86 @@ using namespace std; -/*! - \brief Constructor - \param theId an feature index - \param theParent the object parent - */ -PartSet_OperationSketchBase::PartSet_OperationSketchBase(const QString& theId, - QObject* theParent) -: ModuleBase_PropPanelOperation(theId, theParent) +PartSet_OperationSketchBase::PartSet_OperationSketchBase(const QString& theId, QObject* theParent) + : ModuleBase_Operation(theId, theParent) { } -/*! - * \brief Destructor - */ PartSet_OperationSketchBase::~PartSet_OperationSketchBase() { } -/** - * Returns the feature preview shape - */ -const TopoDS_Shape& PartSet_OperationSketchBase::preview() const +boost::shared_ptr PartSet_OperationSketchBase::preview(FeaturePtr theFeature) +{ + boost::shared_ptr aFeature = boost::dynamic_pointer_cast< + SketchPlugin_Feature>(theFeature); + if (aFeature) { + ResultPtr aRes = aFeature->firstResult(); + ResultBodyPtr aBody = boost::dynamic_pointer_cast(aRes); + if (aBody) + return aBody->shape(); + } + return boost::shared_ptr(); +} + +std::list PartSet_OperationSketchBase::subFeatures() const +{ + return std::list(); +} + +std::list PartSet_OperationSketchBase::getSelectionModes(ObjectPtr theFeature) const +{ + //TODO: Define position of selection modes definition + std::list aModes; + FeaturePtr aFeature = boost::dynamic_pointer_cast(theFeature); + if (aFeature && PartSet_Tools::isConstraintFeature(aFeature->getKind())) { + aModes.push_back(AIS_DSM_Text); + aModes.push_back(AIS_DSM_Line); + } else { + aModes.push_back(AIS_Shape::SelectionMode((TopAbs_ShapeEnum) TopAbs_VERTEX)); + aModes.push_back(AIS_Shape::SelectionMode((TopAbs_ShapeEnum) TopAbs_EDGE)); + } + return aModes; +} +FeaturePtr PartSet_OperationSketchBase::createFeature(const bool theFlushMessage) { - shared_ptr aFeature = dynamic_pointer_cast(feature()); - return aFeature->preview(); + ModuleBase_Operation::createFeature(theFlushMessage); + if (myFeature) + emit featureConstructed(myFeature, FM_Activation); + return myFeature; } -/*! - * Perform the operation start and emit signal about visualization of the operation preview - */ -void PartSet_OperationSketchBase::startOperation() +void PartSet_OperationSketchBase::mousePressed( + QMouseEvent* theEvent, Handle_V3d_View theView, + const std::list& theSelected, + const std::list& theHighlighted) +{ +} +void PartSet_OperationSketchBase::mouseReleased( + QMouseEvent* theEvent, Handle_V3d_View theView, + const std::list& theSelected, + const std::list& theHighlighted) +{ +} +void PartSet_OperationSketchBase::mouseMoved(QMouseEvent* theEvent, Handle(V3d_View) theView) { - ModuleBase_PropPanelOperation::startOperation(); +} +void PartSet_OperationSketchBase::mouseDoubleClick( + QMouseEvent* theEvent, Handle_V3d_View theView, + const std::list& theSelected, + const std::list& theHighlighted) +{ +} - emit visualizePreview(); +void PartSet_OperationSketchBase::restartOperation(const std::string& theType, ObjectPtr theFeature) +{ + FeaturePtr aFeature = ModelAPI_Feature::feature(theFeature); + if (aFeature) { + QStringList aNested = this->nestedFeatures(); + if (!aNested.isEmpty()) { + if (!aNested.contains(QString(aFeature->getKind().c_str()))) + return; + } + } + emit restartRequired(theType, theFeature); }