X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_OperationFeatureBase.cpp;h=458410aba5f87f446abc99c8d228e1a6a1b5f9bd;hb=b851613e697ad60c47e633121933a5ee4b640789;hp=d722998f8419108fd5afebc8793a12a76c2ac4d0;hpb=ef9ec2df08d5809313076b149a3a89082a47c75f;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_OperationFeatureBase.cpp b/src/PartSet/PartSet_OperationFeatureBase.cpp index d722998f8..458410aba 100644 --- a/src/PartSet/PartSet_OperationFeatureBase.cpp +++ b/src/PartSet/PartSet_OperationFeatureBase.cpp @@ -24,7 +24,9 @@ #include #include #include -#include +#include "ModuleBase_IPropertyPanel.h" +#include "ModuleBase_ISelection.h" +#include "ModuleBase_IViewer.h" #include @@ -44,10 +46,9 @@ using namespace std; PartSet_OperationFeatureBase::PartSet_OperationFeatureBase(const QString& theId, QObject* theParent, - FeaturePtr theFeature) + CompositeFeaturePtr theFeature) : PartSet_OperationSketchBase(theId, theParent), - mySketch(theFeature), - myActiveWidget(NULL) + mySketch(theFeature) { } @@ -55,51 +56,41 @@ PartSet_OperationFeatureBase::~PartSet_OperationFeatureBase() { } -void PartSet_OperationFeatureBase::initSelection( - const std::list& theSelected, - const std::list& /*theHighlighted*/) -{ - myPreSelection = theSelected; -} - -void PartSet_OperationFeatureBase::initFeature(FeaturePtr theFeature) -{ - myInitFeature = theFeature; -} - -FeaturePtr PartSet_OperationFeatureBase::sketch() const +CompositeFeaturePtr PartSet_OperationFeatureBase::sketch() const { return mySketch; } -void PartSet_OperationFeatureBase::mouseReleased(QMouseEvent* theEvent, Handle(V3d_View) theView, - const std::list& theSelected, - const std::list& /*theHighlighted*/) +void PartSet_OperationFeatureBase::mouseReleased(QMouseEvent* theEvent, ModuleBase_IViewer* theViewer, + ModuleBase_ISelection* theSelection) { - gp_Pnt aPoint = PartSet_Tools::convertClickToPoint(theEvent->pos(), theView); + Handle(V3d_View) aView = theViewer->activeView(); + gp_Pnt aPoint = PartSet_Tools::convertClickToPoint(theEvent->pos(), aView); double aX = aPoint.X(), anY = aPoint.Y(); + QList aSelected = theSelection->getSelected(); - if (theSelected.empty()) { - PartSet_Tools::convertTo2D(aPoint, sketch(), theView, aX, anY); + if (aSelected.empty()) { + PartSet_Tools::convertTo2D(aPoint, sketch(), aView, aX, anY); } else { - ModuleBase_ViewerPrs aPrs = theSelected.front(); + ModuleBase_ViewerPrs aPrs = aSelected.first(); const TopoDS_Shape& aShape = aPrs.shape(); if (!aShape.IsNull()) { if (aShape.ShapeType() == TopAbs_VERTEX) { // a point is selected const TopoDS_Vertex& aVertex = TopoDS::Vertex(aShape); if (!aVertex.IsNull()) { aPoint = BRep_Tool::Pnt(aVertex); - PartSet_Tools::convertTo2D(aPoint, sketch(), theView, aX, anY); - PartSet_Tools::setConstraints(sketch(), feature(), myActiveWidget->attributeID(), aX, anY); + PartSet_Tools::convertTo2D(aPoint, sketch(), aView, aX, anY); + ModuleBase_ModelWidget* aActiveWgt = myPropertyPanel->activeWidget(); + PartSet_Tools::setConstraints(sketch(), feature(), aActiveWgt->attributeID(), aX, anY); } } else if (aShape.ShapeType() == TopAbs_EDGE) { // a line is selected - PartSet_Tools::convertTo2D(aPoint, sketch(), theView, aX, anY); + PartSet_Tools::convertTo2D(aPoint, sketch(), aView, aX, anY); } } } ObjectPtr aFeature; - if (!theSelected.empty()) { - ModuleBase_ViewerPrs aPrs = theSelected.front(); + if (!aSelected.empty()) { + ModuleBase_ViewerPrs aPrs = aSelected.first(); aFeature = aPrs.object(); } else { aFeature = feature(); // for the widget distance only @@ -108,60 +99,22 @@ void PartSet_OperationFeatureBase::mouseReleased(QMouseEvent* theEvent, Handle(V bool isApplyed = setWidgetValue(aFeature, aX, anY); if (isApplyed) { flushUpdated(); - emit activateNextWidget(myActiveWidget); + myPropertyPanel->activateNextWidget(); } commit(); } -void PartSet_OperationFeatureBase::onWidgetActivated(ModuleBase_ModelWidget* theWidget) +/*bool PartSet_OperationFeatureBase::setWidgetValue(ObjectPtr theFeature, double theX, double theY) { - if(myActiveWidget) { - myActiveWidget->setHighlighted(false); - } - if(theWidget) { - theWidget->setHighlighted(true); - } - - myActiveWidget = theWidget; - activateByPreselection(); - if (myInitFeature && myActiveWidget) { - ModuleBase_WidgetPoint2D* aWgt = dynamic_cast(myActiveWidget); - if (aWgt && aWgt->initFromPrevious(myInitFeature)) { - myInitFeature = FeaturePtr(); - emit activateNextWidget(myActiveWidget); - } - } -} - -void PartSet_OperationFeatureBase::activateByPreselection() -{ - if ((myPreSelection.size() > 0) && myActiveWidget) { - const ModuleBase_ViewerPrs& aPrs = myPreSelection.front(); - ModuleBase_WidgetValueFeature aValue; - aValue.setObject(aPrs.object()); - if (myActiveWidget->setValue(&aValue)) { - myPreSelection.remove(aPrs); - if(isValid()) { - myActiveWidget = NULL; - commit(); - } else { - emit activateNextWidget(myActiveWidget); - } - } - // If preselection is enough to make a valid feature - apply it immediately - } -} - -bool PartSet_OperationFeatureBase::setWidgetValue(ObjectPtr theFeature, double theX, double theY) -{ - if (!myActiveWidget) + ModuleBase_ModelWidget* aActiveWgt = myPropertyPanel->activeWidget(); + if (!aActiveWgt) return false; ModuleBase_WidgetValueFeature* aValue = new ModuleBase_WidgetValueFeature(); aValue->setObject(theFeature); aValue->setPoint(boost::shared_ptr(new GeomAPI_Pnt2d(theX, theY))); - bool isApplyed = myActiveWidget->setValue(aValue); + bool isApplyed = aActiveWgt->setValue(aValue); delete aValue; myIsModified = (myIsModified || isApplyed); return isApplyed; -} +}*/