]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Annotation is stored into study on "Apply" click
authornds <natalia.ermolaeva@opencascade.com>
Wed, 12 Oct 2016 08:08:05 +0000 (11:08 +0300)
committernds <natalia.ermolaeva@opencascade.com>
Wed, 12 Oct 2016 08:08:05 +0000 (11:08 +0300)
src/GEOMGUI/GEOMGUI_ShapeAnnotations.cxx
src/GEOMGUI/GEOMGUI_ShapeAnnotations.h
src/MeasureGUI/MeasureGUI_AnnotationDlg.cxx
src/MeasureGUI/MeasureGUI_AnnotationDlg.h

index af678d9b91506cc51426ddb1a888f3c2816c6d8a..89c66f36f5d3baa58193655e220e8dd2d2e2c76c 100755 (executable)
@@ -137,6 +137,7 @@ GEOMGUI_ShapeAnnotations::GEOMGUI_ShapeAnnotations( const QString& theProperty )
       continue;
     }
 
+    QString aStrName       = "Annotation_X"; // TODO
     QString aStrText       = aRegExpItem.cap( 1 );
     QString aStrVisible    = aRegExpItem.cap( 2 );
     QString aStrFixed      = aRegExpItem.cap( 3 );
@@ -151,6 +152,7 @@ GEOMGUI_ShapeAnnotations::GEOMGUI_ShapeAnnotations( const QString& theProperty )
     aStrText.replace( "::", ":" );
 
     ShapeAnnotation aEntry;
+    aEntry.Name = aStrName;
     aEntry.Text = aStrText;
     aEntry.IsVisible = aStrVisible.toInt() != 0;
     aEntry.IsScreenFixed = aStrFixed.toInt() != 0;
@@ -245,6 +247,7 @@ void GEOMGUI_ShapeAnnotations::FromPresentation( const int theIndex,
   //
   ShapeAnnotation& aChangeEntry = myAnnotations[theIndex];
   aChangeEntry.IsScreenFixed = theShapeAnnotation->GetIsScreenFixed();
+  aChangeEntry.Name          = "Annotation_X"; /// TODO
   aChangeEntry.Text          = QString( (QChar*) theShapeAnnotation->GetText().ToExtString(), theShapeAnnotation->GetText().Length() );
   aChangeEntry.Attach        = theShapeAnnotation->GetAttachPoint().Transformed( aFromLCS );
   aChangeEntry.Position      = theShapeAnnotation->GetPosition();
@@ -258,40 +261,7 @@ void GEOMGUI_ShapeAnnotations::ToPresentation( const int theIndex,
                                                const Handle(GEOM_Annotation)& theShapeAnnotation,
                                                const gp_Ax3& theLCS )
 {
-  //gp_Trsf aToLCS;
-  //aToLCS.SetTransformation( theLCS, gp_Ax3() );
-  //
-  const ShapeAnnotation& aEntry = myAnnotations[theIndex];
-  aEntry.ToPresentation(theShapeAnnotation, theLCS);
-  ////
-  //TCollection_ExtendedString aText;
-  //for (int i = 0; i < (int)aEntry.Text.length(); i++ )
-  //  aText.Insert( i + 1, aEntry.Text[ i ].unicode() );
-  ////
-  //theShapeAnnotation->SetScreenFixed( aEntry.IsScreenFixed );
-  //theShapeAnnotation->SetText( aText );
-  //theShapeAnnotation->SetPosition( aEntry.Position );
-  //theShapeAnnotation->SetAttachPoint( aEntry.Attach.Transformed( aToLCS ) );
-}
-
-bool GEOMGUI_ShapeAnnotations::IsVisible( const int theIndex ) const
-{
-  return myAnnotations[theIndex].IsVisible;
-}
-
-void GEOMGUI_ShapeAnnotations::SetVisible( const int theIndex, const bool theIsVisible )
-{
-  ShapeAnnotation& aChangeEntry = myAnnotations[theIndex];
-  aChangeEntry.IsVisible = theIsVisible;
-}
-
-QString GEOMGUI_ShapeAnnotations::GetName( const int theIndex ) const
-{
-  return "Name";
-}
-
-void GEOMGUI_ShapeAnnotations::SetName( const int theIndex, const QString& theName )
-{
+  myAnnotations[theIndex].ToPresentation(theShapeAnnotation, theLCS);
 }
 
 //=================================================================================
index c0a9a592dd9386ab0f13b0a1243f4abb3f374364..a866931952fce04b80df701962308eec72c94cb2 100755 (executable)
@@ -61,6 +61,7 @@ public:
    */
   struct ShapeAnnotation
   {
+    QString Name; // annotation name label
     QString Text; // annotation text label
     bool    IsVisible; // visibility of annotation
     bool    IsScreenFixed; // fixed screen mode flag
@@ -78,7 +79,8 @@ public:
     
     bool operator == (const ShapeAnnotation& theOther) const
     {
-      return Text == theOther.Text
+      return Name == theOther.Name
+      && Text == theOther.Text
       && IsVisible == theOther.IsVisible
       && IsScreenFixed == theOther.IsScreenFixed
       && Position.IsEqual (theOther.Position, 0.0)
@@ -217,7 +219,10 @@ public:
    *
    * \param theIndex [in] the index of the dimension record.
    */
-  virtual bool IsVisible( const int theIndex ) const;
+  virtual bool IsVisible( const int theIndex ) const
+  {
+    return myAnnotations[theIndex].IsVisible;
+  }
 
   /*!
    * \brief Changes visibility state of the dimension record.
@@ -225,14 +230,20 @@ public:
    * \param theIndex [in] the index of the dimension record.
    * \param theIsVisible [in] the new visibility state.
    */
-  virtual void SetVisible( const int theIndex, const bool theIsVisible );
+  virtual void SetVisible( const int theIndex, const bool theIsVisible )
+  {
+    myAnnotations[theIndex].IsVisible = theIsVisible;
+  }
 
   /*!
    * \brief Returns name of dimension record by its index.
    *
    * \param theIndex [in] the index of the dimension record.
    */
-  virtual QString GetName( const int theIndex ) const;
+  virtual QString GetName( const int theIndex ) const
+  {
+    return myAnnotations[theIndex].Name;
+  }
 
   /*!
    * \brief Changes name of dimension record.
@@ -240,7 +251,10 @@ public:
    * \param theIndex [in] the index of the dimension record.
    * \param theName [in] the new name.
    */
-  virtual void SetName( const int theIndex, const QString& theName );
+  virtual void SetName( const int theIndex, const QString& theName )
+  {
+    myAnnotations[theIndex].Name = theName;
+  }
 
 public:
 
index d010060ead7b799820008552f2eb142270d921fd..3d602e3b3950e8b1ba295448eb6886b2280c7d39 100644 (file)
@@ -217,9 +217,10 @@ void MeasureGUI_AnnotationDlg::Init() {
     initName(tr("ANNOTATION_PREFIX"));
 
     // default presentation values
+    myAnnotationProperties.Name = getNewObjectName();
     myAnnotationProperties.Position = gp_Pnt(250, 250, 250);
     myAnnotationProperties.Text = tr("ANNOTATION_PREFIX");
-    myAnnotationProperties.IsVisible = true;
+    myAnnotationProperties.IsVisible = false;
     myAnnotationProperties.IsScreenFixed = false;
     myAnnotationProperties.Attach = gp_Pnt(0, 0, 0);
     myAnnotationProperties.ShapeIndex = -1;
@@ -485,6 +486,15 @@ void MeasureGUI_AnnotationDlg::onSubShapeTypeChange() {
     return false; \
   }
 
+//=================================================================================
+// function : createOperation
+// purpose  :
+//=================================================================================
+GEOM::GEOM_IOperations_ptr MeasureGUI_AnnotationDlg::createOperation()
+{
+  return getGeomEngine()->GetILocalOperations(getStudyId());
+}
+
 //=================================================================================
 // function : isValid()
 // purpose  : Verify validity of input data
@@ -522,8 +532,6 @@ bool MeasureGUI_AnnotationDlg::execute()
     return false;
 
   if (myIsCreation) {
-    QString aName = getNewObjectName();
-
     SalomeApp_Study* aStudy = getStudy();
     GEOMGUI_ShapeAnnotations aProp =
         aStudy->getObjectProperty( GEOM::sharedPropertiesId(),
@@ -533,14 +541,16 @@ bool MeasureGUI_AnnotationDlg::execute()
                                    .value<GEOMGUI_ShapeAnnotations>();
 
      // append new dimension record to data
+     int aPropId = aProp.GetNumber() - 1;
+     myAnnotationProperties.Name = getNewObjectName(); // update here as we do not listen name modification
+     myAnnotationProperties.IsVisible = true; // initially created annotation is hidden
      aProp.Add( myAnnotationProperties );
-     aProp.SetName( aProp.GetNumber() - 1, aName );
-     aProp.SetVisible( aProp.GetNumber() - 1, true );
 
     // store modified property data
     aStudy->setObjectProperty( GEOM::sharedPropertiesId(),
                                myShape->GetStudyEntry(), GEOM::propertyName(GEOM::ShapeAnnotations),
                                aProp);
+    aProp.SaveToAttribute( aStudy, myShape->GetStudyEntry() );
     myGeomGUI->emitDimensionsUpdated( QString( myShape->GetStudyEntry() ) );
   }
   else {
@@ -624,17 +634,17 @@ void MeasureGUI_AnnotationDlg::redisplayPreview() {
     return;
   }
 
-  erasePreview(false);
+  erasePreview( false );
 
   try {
     //SUIT_OverrideCursor wc;
     //getDisplayer()->SetColor(Quantity_NOC_VIOLET);
     //getDisplayer()->SetToActivate(false);
 
-    if (SALOME_Prs* aPrs = buildPrs())
+    if ( SALOME_Prs* aPrs = buildPrs() )
       displayPreview(aPrs);
-  } catch (const SALOME::SALOME_Exception& e) {
-    SalomeApp_Tools::QtCatchCorbaException(e);
+  } catch ( const SALOME::SALOME_Exception& e ) {
+    SalomeApp_Tools::QtCatchCorbaException( e );
   } catch (...) {
   }
 }
@@ -643,8 +653,9 @@ void MeasureGUI_AnnotationDlg::redisplayPreview() {
 // function : getAttachPoint
 // purpose  : finds a point on shape to attach annotation object
 //=================================================================================
-gp_Pnt MeasureGUI_AnnotationDlg::getAttachPoint(const TopoDS_Shape& theShape) {
-  gp_Pnt aPoint = gp_Pnt(0, 0, 0);
+gp_Pnt MeasureGUI_AnnotationDlg::getAttachPoint(const TopoDS_Shape& theShape)
+{
+  gp_Pnt aPoint = gp_Pnt( 0, 0, 0 );
 
   return aPoint;
 }
index 686cee65d6760e4466b9b4613c7cea4646c71492..bff6569879fd998c174dd537a250e8c1d5c50590 100755 (executable)
@@ -65,6 +65,7 @@ public:
 
 protected:
   // redefined from GEOMBase_Helper
+  virtual                             GEOM::GEOM_IOperations_ptr createOperation();
   virtual bool                        isValid (QString&);
   virtual bool                        execute ();