]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
1. myIsInitialized should have "false" by default. Validators check it to enable...
authornds <nds@opencascade.com>
Thu, 18 Feb 2016 06:07:30 +0000 (09:07 +0300)
committernds <nds@opencascade.com>
Thu, 18 Feb 2016 06:10:27 +0000 (09:10 +0300)
2. do not stop contour creation by selection auxiliary edge
3. tool tip for "Apply", "Cancel", "Help"

14 files changed:
src/GeomData/GeomData_Point.cpp
src/GeomData/GeomData_Point.h
src/GeomData/GeomData_Point2D.cpp
src/GeomData/GeomData_Point2D.h
src/Model/Model_AttributeDouble.cpp
src/Model/Model_AttributeDouble.h
src/Model/Model_AttributeInteger.cpp
src/Model/Model_AttributeInteger.h
src/Model/Model_Data.cpp
src/Model/Model_Expression.cpp
src/PartSet/PartSet_WidgetPoint2d.cpp
src/XGUI/XGUI_ActionsMgr.cpp
src/XGUI/XGUI_ErrorMgr.cpp
src/XGUI/XGUI_ErrorMgr.h

index d034dd6561bdcea6a6e84fccd9923492d0206c82..f6becd98da1e7c418eecb0e0b61df4396371cb88 100644 (file)
@@ -15,9 +15,9 @@
 
 #include <cassert>
 
-GeomData_Point::GeomData_Point(TDF_Label& theLabel)
+GeomData_Point::GeomData_Point()
 {
-  myIsInitialized = true;
+  myIsInitialized = false;
 }
 
 void GeomData_Point::setCalculatedValue(const double theX, const double theY, const double theZ)
index 56d9c042ba8ecb8f6bc3d9af2aa317b4e22c4d8e..3c08a706f641db6cbb10fd95d3eb8e0e7fe266f2 100644 (file)
@@ -73,7 +73,7 @@ class GeomData_Point : public GeomDataAPI_Point
 
  protected:
   /// Initializes attributes
-  GEOMDATA_EXPORT GeomData_Point(TDF_Label& theLabel);
+  GEOMDATA_EXPORT GeomData_Point();
 
   friend class Model_Data;
 };
index 0eca72f8c40edd2934bda0bf2db44c667d79cc1b..fb7bdc99f2fc0b9ed89483344d7f2b1065705d1f 100644 (file)
@@ -15,9 +15,9 @@
 
 #include <cassert>
 
-GeomData_Point2D::GeomData_Point2D(TDF_Label& theLabel)
+GeomData_Point2D::GeomData_Point2D()
 {
-  myIsInitialized = true;
+  myIsInitialized = false;
 }
 
 void GeomData_Point2D::setCalculatedValue(const double theX, const double theY)
index 8b4affa03ebc1bec6f155723e283d0589fee1fbb..d73b20207f24209ab97df5ab067ac21465f21cf4 100644 (file)
@@ -68,7 +68,7 @@ class GeomData_Point2D : public GeomDataAPI_Point2D
 
  protected:
   /// Initializes attributes
-  GEOMDATA_EXPORT GeomData_Point2D(TDF_Label& theLabel);
+  GEOMDATA_EXPORT GeomData_Point2D();
 
   friend class Model_Data;
 };
index 0a8566d119954485f051674eca21380c27045d1c..05a25684182f51e35e24930e769d481639b317f3 100644 (file)
@@ -11,9 +11,9 @@
 #include <ModelAPI_Expression.h>
 #include <ModelAPI_Object.h>
 
-Model_AttributeDouble::Model_AttributeDouble(TDF_Label& theLabel)
+Model_AttributeDouble::Model_AttributeDouble()
 {
-  myIsInitialized = true;
+  myIsInitialized = false;
 }
 
 void Model_AttributeDouble::setCalculatedValue(const double theValue)
index da9ca4b55d62cf0c67285873ccc7869598e20d5b..abf394aa611c84b59883de8932ef3eb86d9445c5 100644 (file)
@@ -59,7 +59,7 @@ class Model_AttributeDouble : public ModelAPI_AttributeDouble
 
  protected:
   /// Initializes attributes
-  Model_AttributeDouble(TDF_Label& theLabel);
+  Model_AttributeDouble();
 
   friend class Model_Data;
 };
index bd355d4d8f27e9add6734490c96ff4e410bbe042..38ce002c5271c01206c0d66f80795047984de6a7 100644 (file)
@@ -11,9 +11,9 @@
 #include <ModelAPI_Expression.h>
 #include <ModelAPI_Object.h>
 
-Model_AttributeInteger::Model_AttributeInteger(TDF_Label& theLabel)
+Model_AttributeInteger::Model_AttributeInteger()
 {
-  myIsInitialized = true;
+  myIsInitialized = false;
 }
 
 void Model_AttributeInteger::setCalculatedValue(const int theValue)
index bd6a12da3a36108febbb67c27c83b6e278517fe0..870db29908d383499274846bfe65b03e247098c5 100644 (file)
@@ -57,7 +57,7 @@ class Model_AttributeInteger : public ModelAPI_AttributeInteger
 
  protected:
   /// Initializes attributes
-  Model_AttributeInteger(TDF_Label& theLabel);
+  Model_AttributeInteger();
 
   friend class Model_Data;
 
index 530293b7e7061a9d5ae53833766eb8d3b7b9adf2..3d16c14bb0dfe7bc74b7ae13ac2f67bb67fa50e7 100644 (file)
@@ -121,17 +121,17 @@ AttributePtr Model_Data::addAttribute(const std::string& theID, const std::strin
   if (theAttrType == ModelAPI_AttributeDocRef::typeId()) {
     anAttr = new Model_AttributeDocRef(anAttrLab);
   } else if (theAttrType == Model_AttributeInteger::typeId()) {
-    Model_AttributeInteger* anAttribute = new Model_AttributeInteger(anAttrLab);
+    Model_AttributeInteger* anAttribute = new Model_AttributeInteger();
     // Expression should use the same label to support backward compatibility
     TDF_Label anExpressionLab = anAttrLab;
     anAttribute->myExpression.reset(new Model_ExpressionInteger(anExpressionLab));
-    anAttribute->myIsInitialized = anAttribute->myIsInitialized && anAttribute->myExpression->isInitialized();
+    anAttribute->myIsInitialized = anAttribute->myExpression->isInitialized();
     anAttr = anAttribute;
   } else if (theAttrType == ModelAPI_AttributeDouble::typeId()) {
-    Model_AttributeDouble* anAttribute = new Model_AttributeDouble(anAttrLab);
+    Model_AttributeDouble* anAttribute = new Model_AttributeDouble();
     TDF_Label anExpressionLab = anAttrLab.FindChild(1);
     anAttribute->myExpression.reset(new Model_ExpressionDouble(anExpressionLab));
-    anAttribute->myIsInitialized = anAttribute->myIsInitialized && anAttribute->myExpression->isInitialized();
+    anAttribute->myIsInitialized = anAttribute->myExpression->isInitialized();
     anAttr = anAttribute;
   } else if (theAttrType == Model_AttributeBoolean::typeId()) {
     anAttr = new Model_AttributeBoolean(anAttrLab);
@@ -154,22 +154,26 @@ AttributePtr Model_Data::addAttribute(const std::string& theID, const std::strin
   } 
   // create also GeomData attributes here because only here the OCAF structure is known
   else if (theAttrType == GeomData_Point::typeId()) {
-    GeomData_Point* anAttribute = new GeomData_Point(anAttrLab);
+    GeomData_Point* anAttribute = new GeomData_Point();
+    bool anAllInitialized = true;
     for (int aComponent = 0; aComponent < GeomData_Point::NUM_COMPONENTS; ++aComponent) {
       TDF_Label anExpressionLab = anAttrLab.FindChild(aComponent + 1);
       anAttribute->myExpression[aComponent].reset(new Model_ExpressionDouble(anExpressionLab));
-      anAttribute->myIsInitialized = anAttribute->myIsInitialized && anAttribute->myExpression[aComponent]->isInitialized(); 
+      anAllInitialized = anAllInitialized && anAttribute->myExpression[aComponent]->isInitialized();
     }
+    anAttribute->myIsInitialized = anAllInitialized;
     anAttr = anAttribute;
   } else if (theAttrType == GeomData_Dir::typeId()) {
     anAttr = new GeomData_Dir(anAttrLab);
   } else if (theAttrType == GeomData_Point2D::typeId()) {
-    GeomData_Point2D* anAttribute = new GeomData_Point2D(anAttrLab);
+    GeomData_Point2D* anAttribute = new GeomData_Point2D();
+    bool anAllInitialized = true;
     for (int aComponent = 0; aComponent < GeomData_Point2D::NUM_COMPONENTS; ++aComponent) {
       TDF_Label anExpressionLab = anAttrLab.FindChild(aComponent + 1);
       anAttribute->myExpression[aComponent].reset(new Model_ExpressionDouble(anExpressionLab));
-      anAttribute->myIsInitialized = anAttribute->myIsInitialized && anAttribute->myExpression[aComponent]->isInitialized(); 
+      anAllInitialized = anAllInitialized && anAttribute->myExpression[aComponent]->isInitialized();
     }
+    anAttribute->myIsInitialized = anAllInitialized;
     anAttr = anAttribute;
   }
   if (anAttr) {
index ef7408e36f335d3f30a6d9782977442b71f090c7..c7ad95c8188ee116a3fc086cbe8ac490a2d61dbc 100644 (file)
@@ -20,23 +20,15 @@ static Standard_GUID kInvalidGUID("caee5ce4-34b1-4b29-abcb-685287d18096");
 
 Model_Expression::Model_Expression(TDF_Label& theLabel)
 {
-  myIsInitialized = true;
   if (!theLabel.FindAttribute(TDataStd_Name::GetID(), myText)) {
     myText = TDataStd_Name::Set(theLabel, TCollection_ExtendedString());
-//    myIsInitialized = false;
   }
   if (!theLabel.FindAttribute(TDataStd_Comment::GetID(), myError)) {
     myError = TDataStd_Comment::Set(theLabel, TCollection_ExtendedString());
-//    myIsInitialized = false;
   }
   if (!theLabel.FindAttribute(TDataStd_ExtStringList::GetID(), myUsedParameters)) {
     myUsedParameters = TDataStd_ExtStringList::Set(theLabel);
-//    myIsInitialized = false;
   }
-  // All this attributes should not set myIsInitialized = false.
-  // This attributes are optional and may absent in old files. So this is OK.
-  // The reason to set myIsInitialized = false is only absence of
-  // the value attribute.
 }
 
 void Model_Expression::setText(const std::string& theValue)
@@ -106,7 +98,8 @@ Model_ExpressionDouble::Model_ExpressionDouble(TDF_Label& theLabel)
         }
       }
     }
-  }
+  } else
+    myIsInitialized = true;
 }
 
 void Model_ExpressionDouble::setValue(const double theValue)
@@ -141,7 +134,8 @@ Model_ExpressionInteger::Model_ExpressionInteger(TDF_Label& theLabel)
   if (!theLabel.FindAttribute(TDataStd_Integer::GetID(), myInteger)) {
     myInteger = TDataStd_Integer::Set(theLabel, 0);
     myIsInitialized = false;
-  }
+  } else
+    myIsInitialized = true;
 }
 
 void Model_ExpressionInteger::setValue(const int theValue)
index 5793a383d78fb862242f28ef7751432e163e8909..8cfec7f7d5affd10c7e4da31ec3234dce778c504 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <Events_Loop.h>
 #include <ModelAPI_Events.h>
+#include <ModelAPI_AttributeBoolean.h>
 
 #include <ModelAPI_Feature.h>
 #include <ModelAPI_Data.h>
@@ -429,6 +430,7 @@ void PartSet_WidgetPoint2D::onMouseRelease(ModuleBase_IViewWindow* theWnd, QMous
         // do not set a coincidence constraint in the attribute if the feature contains a point
         // with the same coordinates. It is important for line creation in order to do not set
         // the same constraints for the same points, oterwise the result line has zero length.
+        bool isAuxiliaryFeature = false;
         if (getPoint2d(aView, aShape, aX, aY)) {
           setPoint(aX, aY);
           PartSet_Tools::setConstraints(mySketch, feature(), attributeID(), aX, aY);
@@ -437,6 +439,13 @@ void PartSet_WidgetPoint2D::onMouseRelease(ModuleBase_IViewWindow* theWnd, QMous
           if (MyFeaturesForCoincedence.contains(myFeature->getKind().c_str())) {
             setConstraintWith(aObject);
             setValueState(Stored); // in case of edge selection, Apply state should also be updated
+
+            FeaturePtr anObjectFeature = ModelAPI_Feature::feature(aObject);
+            std::string anAuxiliaryAttribute = SketchPlugin_SketchEntity::AUXILIARY_ID();
+            AttributeBooleanPtr anAuxiliaryAttr = std::dynamic_pointer_cast<ModelAPI_AttributeBoolean>(
+                                              anObjectFeature->data()->attribute(anAuxiliaryAttribute));
+            if (anAuxiliaryAttr.get())
+              isAuxiliaryFeature = anAuxiliaryAttr->value();
           }
         }
         // it is important to perform updateObject() in order to the current value is 
@@ -446,7 +455,7 @@ void PartSet_WidgetPoint2D::onMouseRelease(ModuleBase_IViewWindow* theWnd, QMous
         // points of the line becomes less than the tolerance. Validator of the line returns
         // false, the line will be aborted, but sketch stays valid.
         updateObject(feature());
-        if (!anOrphanPoint && !anExternal)
+        if (!anOrphanPoint && !anExternal && !isAuxiliaryFeature)
           emit vertexSelected();
         emit focusOutWidget(this);
       }
index c16332fd23ea467142f05f61d98a480ba19b3c49..2468786c43859ced97f6586a46310ef28c820908 100644 (file)
@@ -228,20 +228,25 @@ QAction* XGUI_ActionsMgr::operationStateAction(OperationStateActionId theId, QOb
   } else {
     switch (theId) {
       case Accept:
-      case AcceptAll:
+      case AcceptAll: {
         aResult = new QAction(QIcon(":pictures/button_ok.png"), "", theParent);
-        break;
+        aResult->setToolTip("Apply");
+      }
+      break;
       case Abort:
       case AbortAll: {
         aResult = new QAction(QIcon(":pictures/button_cancel.png"), "", theParent);
-        if(theId == Abort) {
+        aResult->setToolTip("Cancel");
+        if (theId == Abort) {
           aResult->setShortcut(QKeySequence(Qt::Key_Escape));
         }
       }
       break;
-      case Help:
+      case Help: {
         aResult = new QAction(QIcon(":pictures/button_help.png"), "", theParent);
-        break;
+        aResult->setToolTip("Help");
+      }
+      break;
       default:
         break;
     }
index 9e379850c166e734290e95753d20f16c45c29c18..e360e99716aeefaf3e0de208b83d3a9556f7bfe2 100644 (file)
@@ -39,7 +39,13 @@ XGUI_ErrorMgr::XGUI_ErrorMgr(QObject* theParent, ModuleBase_IWorkshop* theWorksh
     myErrorLabel(0),
     myWorkshop(theWorkshop)
 {
+  ModuleBase_ModelWidget* anActiveWidget = activeWidget();
+  XGUI_ActionsMgr* anActionsMgr = workshop()->actionsMgr();
+  QAction* anAcceptAllAction = anActionsMgr->operationStateAction(XGUI_ActionsMgr::AcceptAll, NULL);
+  myAcceptAllToolTip = anAcceptAllAction->toolTip();
 
+  QAction* anOkAction = anActionsMgr->operationStateAction(XGUI_ActionsMgr::Accept);
+  myAcceptToolTip = anOkAction->toolTip();
 }
 
 XGUI_ErrorMgr::~XGUI_ErrorMgr()
@@ -88,7 +94,7 @@ void XGUI_ErrorMgr::updateAcceptAllAction(const FeaturePtr& theFeature)
     QAction* anAcceptAllAction = anActionsMgr->operationStateAction(XGUI_ActionsMgr::AcceptAll, NULL);
     bool anEnabled = anError.isEmpty();
     anAcceptAllAction->setEnabled(anEnabled);
-    anAcceptAllAction->setToolTip(anError);
+    anAcceptAllAction->setToolTip(!anEnabled ? anError : myAcceptAllToolTip);
   }
 }
 
@@ -110,6 +116,7 @@ void XGUI_ErrorMgr::updateActionState(QAction* theAction, const QString& theErro
   bool anEnabled = theError.isEmpty();
 
   theAction->setEnabled(anEnabled);
+  theAction->setToolTip(anEnabled ? myAcceptToolTip : theError);
   // some operations have no property panel, so it is important to check that it is not null
   if (myPropertyPanel) {
     // update controls error information
index 03d057c5bbda2deb004c2ed8d2e924935371fcfb..23012267b30a52f781cadcbc07c71b12d27f05b5 100644 (file)
@@ -74,6 +74,8 @@ private:
   ModuleBase_IWorkshop* myWorkshop; /// workshop
   QDialog* myErrorDialog; /// contains the error message
   QLabel* myErrorLabel; /// contains an error information
+  QString myAcceptToolTip; /// cached tool tip value for enabled Accept action
+  QString myAcceptAllToolTip; /// cached tool tip value for enabled AcceptAll action
 };
 
 #endif // XGUI_ErrorMgr_H
\ No newline at end of file