#include <ModuleBase_ISelection.h>
#include <ModuleBase_ViewerPrs.h>
#include <ModuleBase_WidgetValidator.h>
+#include <ModuleBase_LabelValue.h>
#include <Config_Keywords.h>
#include <Config_WidgetAPI.h>
aGroupLay->setColumnStretch(1, 1);
{
QLabel* aLabel = new QLabel(myGroupBox);
- aLabel->setText(tr("X "));
- aGroupLay->addWidget(aLabel, 0, 0);
-
- myXSpin = new ModuleBase_ParamSpinBox(myGroupBox);
- myXSpin->setAcceptVariables(aAcceptVariables);
- myXSpin->setMinimum(-DBL_MAX);
- myXSpin->setMaximum(DBL_MAX);
- myXSpin->setToolTip(tr("X"));
+
+ myXSpin = new ModuleBase_LabelValue(myGroupBox, tr("X"));
+ //ModuleBase_ParamSpinBox(myGroupBox);
+ //myXSpin->setAcceptVariables(aAcceptVariables);
+ //myXSpin->setMinimum(-DBL_MAX);
+ //myXSpin->setMaximum(DBL_MAX);
+ //myXSpin->setToolTip(tr("X"));
aGroupLay->addWidget(myXSpin, 0, 1);
- connect(myXSpin, SIGNAL(textChanged(const QString&)), this, SIGNAL(valuesModified()));
- myXSpin->setValueEnabled(isValueEnabled());
+ //connect(myXSpin, SIGNAL(textChanged(const QString&)), this, SIGNAL(valuesModified()));
+ //myXSpin->setValueEnabled(isValueEnabled());
}
{
- QLabel* aLabel = new QLabel(myGroupBox);
- aLabel->setText(tr("Y "));
- aGroupLay->addWidget(aLabel, 1, 0);
-
- myYSpin = new ModuleBase_ParamSpinBox(myGroupBox);
- myYSpin->setAcceptVariables(aAcceptVariables);
- myYSpin->setMinimum(-DBL_MAX);
- myYSpin->setMaximum(DBL_MAX);
- myYSpin->setToolTip(tr("Y"));
+ //QLabel* aLabel = new QLabel(myGroupBox);
+ //aLabel->setText(tr("Y "));
+ //aGroupLay->addWidget(aLabel, 1, 0);
+
+ myYSpin = new ModuleBase_LabelValue(myGroupBox, tr("Y"));
+ //ModuleBase_ParamSpinBox(myGroupBox);
+ //myYSpin = new ModuleBase_ParamSpinBox(myGroupBox);
+ //myYSpin->setAcceptVariables(aAcceptVariables);
+ //myYSpin->setMinimum(-DBL_MAX);
+ //myYSpin->setMaximum(DBL_MAX);
+ //myYSpin->setToolTip(tr("Y"));
aGroupLay->addWidget(myYSpin, 1, 1);
- connect(myYSpin, SIGNAL(textChanged(const QString&)), this, SIGNAL(valuesModified()));
- myYSpin->setValueEnabled(isValueEnabled());
+ //connect(myYSpin, SIGNAL(textChanged(const QString&)), this, SIGNAL(valuesModified()));
+ //myYSpin->setValueEnabled(isValueEnabled());
}
QVBoxLayout* aLayout = new QVBoxLayout(this);
ModuleBase_Tools::zeroMargins(aLayout);
bool PartSet_WidgetPoint2D::resetCustom()
{
bool aDone = false;
- if (!isUseReset() || isComputedDefault() || myXSpin->hasVariable() || myYSpin->hasVariable()) {
+ if (!isUseReset() || isComputedDefault()
+ /*|| myXSpin->hasVariable() || myYSpin->hasVariable()*/) {
aDone = false;
}
else {
double aDefValue = QString::fromStdString(getDefaultValue()).toDouble(&isOk);
// it is important to block the spin box control in order to do not through out the
// locking of the validating state.
- ModuleBase_Tools::setSpinValue(myXSpin, isOk ? aDefValue : 0.0);
- ModuleBase_Tools::setSpinValue(myYSpin, isOk ? aDefValue : 0.0);
+ myXSpin->setValue(isOk ? aDefValue : 0.0);
+ myYSpin->setValue(isOk ? aDefValue : 0.0);
+
+ //ModuleBase_Tools::setSpinValue(myXSpin, isOk ? aDefValue : 0.0);
+ //ModuleBase_Tools::setSpinValue(myYSpin, isOk ? aDefValue : 0.0);
storeValueCustom();
aDone = true;
}
void PartSet_WidgetPoint2D::selectContent()
{
- myXSpin->selectAll();
+ // myXSpin->selectAll();
}
bool PartSet_WidgetPoint2D::setPoint(double theX, double theY)
if (fabs(theY) >= MaxCoordinate)
return false;
- ModuleBase_Tools::setSpinValue(myXSpin, theX);
- ModuleBase_Tools::setSpinValue(myYSpin, theY);
+ myXSpin->setValue(theX);
+ myYSpin->setValue(theY);
+
+ //ModuleBase_Tools::setSpinValue(myXSpin, theX);
+ //ModuleBase_Tools::setSpinValue(myYSpin, theY);
storeValue();
return true;
// if text is not empty then setValue will be ignored
// so we should set the text at first
- aPoint->setText(myXSpin->hasVariable() ? myXSpin->text().toStdString() : "",
- myYSpin->hasVariable() ? myYSpin->text().toStdString() : "");
- aPoint->setValue(!myXSpin->hasVariable() ? myXSpin->value() : aPoint->x(),
- !myYSpin->hasVariable() ? myYSpin->value() : aPoint->y());
+ //aPoint->setText(myXSpin->hasVariable() ? myXSpin->text().toStdString() : "",
+ // myYSpin->hasVariable() ? myYSpin->text().toStdString() : "");
+ //aPoint->setValue(!myXSpin->hasVariable() ? myXSpin->value() : aPoint->x(),
+ // !myYSpin->hasVariable() ? myYSpin->value() : aPoint->y());
+ aPoint->setValue(myXSpin->value(), myYSpin->value());
// after movement the solver will call the update event: optimization
moveObject(myFeature);
std::shared_ptr<ModelAPI_Data> aData = myFeature->data();
std::shared_ptr<GeomDataAPI_Point2D> aPoint = std::dynamic_pointer_cast<GeomDataAPI_Point2D>(
aData->attribute(attributeID()));
- QString aTextX = QString::fromStdString(aPoint->isInitialized() ? aPoint->textX() : "0");
- QString aTextY = QString::fromStdString(aPoint->isInitialized() ? aPoint->textY() : "0");
-
- bool isDouble = false;
- double aVal = 0;
- if (aTextX.isEmpty()) {
- ModuleBase_Tools::setSpinValue(myXSpin, aPoint->x());
- } else {
- aVal = aTextX.toDouble(&isDouble);
- if (isDouble)
- ModuleBase_Tools::setSpinValue(myXSpin, aVal);
- else
- ModuleBase_Tools::setSpinText(myXSpin, aTextX);
- }
- if (aTextY.isEmpty()) {
- ModuleBase_Tools::setSpinValue(myYSpin, aPoint->y());
- } else {
- aVal = aTextY.toDouble(&isDouble);
- if (isDouble)
- ModuleBase_Tools::setSpinValue(myYSpin, aVal);
- else
- ModuleBase_Tools::setSpinText(myYSpin, aTextY);
- }
- //if (aTextX.empty() || aTextY.empty()) {
- // ModuleBase_Tools::setSpinValue(myXSpin, aPoint->x());
- // ModuleBase_Tools::setSpinValue(myYSpin, aPoint->y());
- //} else {
- // ModuleBase_Tools::setSpinText(myXSpin, QString::fromStdString(aTextX));
- // ModuleBase_Tools::setSpinText(myYSpin, QString::fromStdString(aTextY));
- //}
+ double aValueX = aPoint->isInitialized() ? aPoint->x() : 0.;
+ double aValueY = aPoint->isInitialized() ? aPoint->y() : 0.;
+ myXSpin->setValue(aValueX);
+ myYSpin->setValue(aValueY);
+
return true;
}
void PartSet_WidgetPoint2D::storeCurentValue()
{
// do not use cash if a variable is used
- if (myXSpin->hasVariable() || myYSpin->hasVariable())
- return;
+ //if (myXSpin->hasVariable() || myYSpin->hasVariable())
+ // return;
myValueIsCashed = true;
myIsFeatureVisibleInCash = XGUI_Displayer::isVisible(
myValueIsCashed = false;
myIsFeatureVisibleInCash = true;
- ModuleBase_Tools::setSpinValue(myXSpin, myXValueInCash);
- ModuleBase_Tools::setSpinValue(myYSpin, myYValueInCash);
+ myXSpin->setValue(myXValueInCash);
+ myYSpin->setValue(myYValueInCash);
+ //ModuleBase_Tools::setSpinValue(myXSpin, myXValueInCash);
+ //ModuleBase_Tools::setSpinValue(myYSpin, myYValueInCash);
// store value to the model
storeValueCustom();
}
}
+void PartSet_WidgetPoint2D::setHighlighted(bool isHighlighted)
+{
+}
+
void PartSet_WidgetPoint2D::deactivate()
{
// the value of the control should be stored to model if it was not
aFirstValue = myPreSelected;
}
// if we have selection and use it
- if (aFirstValue.get() && isValidSelectionCustom(aFirstValue)) {
+ if (aFirstValue.get() && isValidSelectionCustom(aFirstValue) &&
+ aFirstValue->shape().get()) { /// Trihedron Axis may be selected, but shape is empty
GeomShapePtr aGeomShape = aFirstValue->shape();
TopoDS_Shape aShape = aGeomShape->impl<TopoDS_Shape>();
ObjectPtr aObject = aFirstValue->object();
std::shared_ptr<SketchPlugin_Feature> aSPFeature;
if (aSelectedFeature.get() != NULL)
aSPFeature = std::dynamic_pointer_cast<SketchPlugin_Feature>(aSelectedFeature);
- if ((!aSPFeature && !aShape.IsNull()) ||
- (aSPFeature.get() && aSPFeature->isExternal())) {
- ResultPtr aFixedObject;
+
+ ResultPtr aFixedObject;
+ bool aSketchExternalFeature = aSPFeature.get() && aSPFeature->isExternal();
+ if ((!aSPFeature && !aShape.IsNull()) || aSketchExternalFeature) {
+ aFixedObject = PartSet_Tools::findFixedObjectByExternal(aShape, aObject, mySketch);
+ if (aSketchExternalFeature && !aFixedObject.get()) {/// local selection on external feature
+ anExternal = false;
+ }
+ else {
anExternal = true;
- aFixedObject = PartSet_Tools::findFixedObjectByExternal(aShape, aObject, mySketch);
if (!aFixedObject.get())
aFixedObject = PartSet_Tools::createFixedObjectByExternal(aShape, aObject, mySketch);
- double aX, aY;
- if (getPoint2d(aView, aShape, aX, aY) && isFeatureContainsPoint(myFeature, aX, aY)) {
- // do not create a constraint to the point, which already used by the feature
- // if the feature contains the point, focus is not switched
+ }
+ }
+ if (anExternal) {
+ double aX, aY;
+ if (getPoint2d(aView, aShape, aX, aY) && isFeatureContainsPoint(myFeature, aX, aY)) {
+ // do not create a constraint to the point, which already used by the feature
+ // if the feature contains the point, focus is not switched
+ setPoint(aX, aY);
+ }
+ else {
+ if (getPoint2d(aView, aShape, aX, aY))
setPoint(aX, aY);
- }
- else {
- if (getPoint2d(aView, aShape, aX, aY))
- setPoint(aX, aY);
- else
- setValueState(Stored); // in case of edge selection, Apply state should also be updated
- bool anOrphanPoint = aShape.ShapeType() == TopAbs_VERTEX ||
- isOrphanPoint(aSelectedFeature, mySketch, aX, aY);
- if (anExternal) {
- // we should not stop reentrant operation on external objects because
- anOrphanPoint = true;
- // they are not participate in the contour creation excepting external vertices
- if (aShape.ShapeType() == TopAbs_VERTEX) {
- FeaturePtr aFixedFeature = ModelAPI_Feature::feature(aFixedObject);
- if (aFixedFeature.get() && aFixedFeature->getKind() == SketchPlugin_Point::ID()) {
- anOrphanPoint = isOrphanPoint(aFixedFeature, mySketch, aX, aY);
- }
- }
- else {
- // point is taken from mouse event and set in attribute.
- // It should be done before setting
- // coinident constraint to the external line. If a point is created, it should be
- // in the mouse clicked point
- gp_Pnt aPoint =
- PartSet_Tools::convertClickToPoint(theEvent->pos(), theWindow->v3dView());
- double aX, anY;
- PartSet_Tools::convertTo2D(aPoint, mySketch, aView, aX, anY);
- setPoint(aX, anY);
+ else
+ setValueState(Stored); // in case of edge selection, Apply state should also be updated
+ bool anOrphanPoint = aShape.ShapeType() == TopAbs_VERTEX ||
+ isOrphanPoint(aSelectedFeature, mySketch, aX, aY);
+ if (anExternal) {
+ // we should not stop reentrant operation on external objects because
+ anOrphanPoint = true;
+ // they are not participate in the contour creation excepting external vertices
+ if (aShape.ShapeType() == TopAbs_VERTEX) {
+ FeaturePtr aFixedFeature = ModelAPI_Feature::feature(aFixedObject);
+ if (aFixedFeature.get() && aFixedFeature->getKind() == SketchPlugin_Point::ID()) {
+ anOrphanPoint = isOrphanPoint(aFixedFeature, mySketch, aX, aY);
}
}
- if (aFixedObject.get())
- setConstraintWith(aFixedObject);
- // fignal updated should be flushed in order to visualize possible created
- // external objects e.g. selection of trihedron axis when input end arc point
- updateObject(feature());
+ }
+ if (aFixedObject.get())
+ setConstraintWith(aFixedObject);
+ // fignal updated should be flushed in order to visualize possible created
+ // external objects e.g. selection of trihedron axis when input end arc point
+ updateObject(feature());
- if (!anOrphanPoint)
- emit vertexSelected(); // it stops the reentrant operation
+ if (!anOrphanPoint)
+ emit vertexSelected(); // it stops the reentrant operation
- emit focusOutWidget(this);
- }
+ emit focusOutWidget(this);
}
+ }
if (!anExternal) {
double aX, aY;
bool isProcessed = false;
bool PartSet_WidgetPoint2D::processEnter()
{
- bool isModified = getValueState() == ModifiedInPP;
+ return false;
+ /*bool isModified = getValueState() == ModifiedInPP;
if (isModified) {
bool isXModified = myXSpin->hasFocus();
emit valuesChanged();
else
myYSpin->selectAll();
}
- return isModified;
+ return isModified;*/
}
bool PartSet_WidgetPoint2D::useSelectedShapes() const