]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #348 Validate sketch is disabled when point coordinates are set manually
authornds <natalia.donis@opencascade.com>
Thu, 22 Jan 2015 09:02:50 +0000 (12:02 +0300)
committernds <natalia.donis@opencascade.com>
Thu, 22 Jan 2015 09:02:50 +0000 (12:02 +0300)
Do not store value if the default value was not defined in the XML file.
It corrects setValue in the Point2D to update attributes even if the value are the same.

src/GeomData/GeomData_Point2D.cpp
src/ModuleBase/ModuleBase_ModelWidget.cpp
src/ModuleBase/ModuleBase_ModelWidget.h
src/PartSet/PartSet_WidgetPoint2d.cpp
src/XGUI/XGUI_Workshop.cpp

index 5061f8193ec6c8eb495116a788fb2395fb5239bb..314a0ab79468c6d545e651dcdfa2a70b963b3ac2 100644 (file)
@@ -13,7 +13,7 @@ using namespace std;
 
 void GeomData_Point2D::setValue(const double theX, const double theY)
 {
-  if (myCoords->Value(0) != theX || myCoords->Value(1) != theY) {
+  if (!myIsInitialized || myCoords->Value(0) != theX || myCoords->Value(1) != theY) {
     myCoords->SetValue(0, theX);
     myCoords->SetValue(1, theY);
     owner()->data()->sendAttributeUpdated(this);
index 79b00dfe2071fb892d6c3d3799377ad17f3ac438..6a5421549ff74845da9a60dca29fd6257a54761d 100644 (file)
@@ -27,6 +27,7 @@ ModuleBase_ModelWidget::ModuleBase_ModelWidget(QWidget* theParent, const Config_
     : QObject(theParent),
       myParentId(theParentId)
 {
+  myIsValueDefault = !theData->getProperty(ATTR_DEFAULT).empty();
   myIsComputedDefault = false;
   myAttributeID = theData ? theData->widgetId() : "";
 }
index 15a0c5b2a0b1865367690be3259fb972d1a5f60f..3b0a4c5a4f92f72805cf69b8faaec216165d4393 100644 (file)
@@ -50,6 +50,11 @@ Q_OBJECT
   /// on operation's execute, like radius for circle's constraint (can not be zero)
   bool isComputedDefault() { return myIsComputedDefault; }
 
+  /// Returns true, if default value of the widget is defined in the XML and it is not the
+  /// computed value
+  /// \return the boolean result
+  bool isValueDefault() { return myIsValueDefault; }
+
   /// Defines if it is supposed that the widget should interact with the viewer.
   virtual bool isViewerSelector() { return false; }
 
@@ -160,6 +165,7 @@ signals:
   bool myIsComputedDefault; /// Value should be computed on execute,
                             /// like radius for circle's constraint (can not be zero)
 
+  bool myIsValueDefault; /// the default value is defined in the XML for this attribute
   bool myIsEditing;
 };
 
index 6af2c509460438b634cfaac77d02a5bf1c908bf5..fe48cb7b6650ff26b314540ff8ec0151645802db 100644 (file)
@@ -194,6 +194,9 @@ void PartSet_WidgetPoint2D::activate()
   QIntList aModes;
   aModes << TopAbs_VERTEX;
   myWorkshop->moduleConnector()->activateSubShapesSelection(aModes);
+  // the control value is stored to the mode by the focus in on the widget
+  // we need the value is initialized in order to enable the apply button in the property panel
+  storeValue();
 }
 
 void PartSet_WidgetPoint2D::deactivate()
@@ -276,6 +279,9 @@ void PartSet_WidgetPoint2D::onMouseMove(ModuleBase_IViewWindow* theWnd, QMouseEv
   if (isEditingMode())
     return;
   myWorkshop->operationMgr()->setLockValidating(true);
+  // the Ok button should be disabled in the property panel by moving the mouse point in the viewer
+  // this leads that the user does not try to click Ok and it avoids an incorrect situation that the 
+  // line is moved to the cursor to the Ok button
   myWorkshop->propertyPanel()->setOkEnabled(false);
 
   gp_Pnt aPoint = PartSet_Tools::convertClickToPoint(theEvent->pos(), theWnd->v3dView());
index 87d424125c0db2b5c4397f4760e73a6b5da6f351..d14fe7545961b656667af606f793e0bc297c51c7 100644 (file)
@@ -644,7 +644,7 @@ void XGUI_Workshop::setPropertyPanel(ModuleBase_Operation* theOperation)
     aWidget->enableFocusProcessing();
     QObject::connect(aWidget, SIGNAL(valuesChanged()), this, SLOT(onWidgetValuesChanged()));
     // Init default values
-    if (!theOperation->isEditOperation() && !aWidget->isComputedDefault()) {
+    if (!theOperation->isEditOperation() && aWidget->isValueDefault() && !aWidget->isComputedDefault()) {
       aWidget->storeValue();
     }
   }