]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
bug #234: projection of polyline
authorasl <asl@opencascade.com>
Fri, 13 Dec 2013 07:19:25 +0000 (07:19 +0000)
committerasl <asl@opencascade.com>
Fri, 13 Dec 2013 07:19:25 +0000 (07:19 +0000)
src/HYDROGUI/HYDROGUI_ObjSelector.cxx
src/HYDROGUI/HYDROGUI_ObjSelector.h
src/HYDROGUI/HYDROGUI_Poly3DDlg.cxx
src/HYDROGUI/HYDROGUI_Poly3DDlg.h
src/HYDROGUI/HYDROGUI_Poly3DOp.cxx
src/HYDROGUI/resources/HYDROGUI_msg_en.ts

index df700b220c674a83bfc3374e56fd55f9ef6f6120..d855bc2172c51e57b837148ce55980f2580adc74 100644 (file)
@@ -140,6 +140,7 @@ void HYDROGUI_ObjSelector::OnSelectionChanged()
 void HYDROGUI_ObjSelector::SetName( const QString& theName )
 {
   myObjName->setText( theName );
+  emit selectionChanged();
 }
 
 QString HYDROGUI_ObjSelector::GetName() const
index 5846aed6bcd8dcefed318a484e290c39e98b07d2..63cf857d6a491f94cf2a19aa59de82f68ee89449 100644 (file)
@@ -61,6 +61,8 @@ signals:
    */
   void alreadySelected( const QString& theName );
 
+  void selectionChanged();
+
 protected:
   virtual void paintEvent( QPaintEvent* );
   virtual bool hitButton( const QPoint& thePnt ) const;
index 5cbf6235b913fc070108dada2a76b546f6331b93..ed4f67f30022a88f4e9547f38ce8f23d9fde470e 100644 (file)
@@ -49,19 +49,24 @@ HYDROGUI_Poly3DDlg::HYDROGUI_Poly3DDlg( HYDROGUI_Module* theModule, const QStrin
   // Parameters
   QGroupBox* aParamGroup = new QGroupBox( tr( "PARAMETERS" ) );
 
-  myProfileLabel = new QLabel( tr( "PROFILE" ), aParamGroup );
-  myProfile = new HYDROGUI_ObjSelector( theModule, KIND_PROFILE, aParamGroup );
-
   myPolylineLabel = new QLabel( tr( "POLYLINE" ), aParamGroup );
   myPolyline = new HYDROGUI_ObjSelector( theModule, KIND_POLYLINEXY, aParamGroup );
 
+  myProfileLabel = new QLabel( tr( "PROFILE" ), aParamGroup );
+  myProfile = new HYDROGUI_ObjSelector( theModule, KIND_PROFILE, aParamGroup );
+  
+  myBathLabel = new QLabel( tr( "BATH" ), aParamGroup );
+  myBath = new HYDROGUI_ObjSelector( theModule, KIND_BATHYMETRY, aParamGroup );
+
   QGridLayout* aParamLayout = new QGridLayout( aParamGroup );
   aParamLayout->setMargin( 5 );
   aParamLayout->setSpacing( 5 );
-  aParamLayout->addWidget( myProfileLabel,   0, 0 );
-  aParamLayout->addWidget( myProfile,        0, 1 );
-  aParamLayout->addWidget( myPolylineLabel,  1, 0 );
-  aParamLayout->addWidget( myPolyline,       1, 1 );
+  aParamLayout->addWidget( myPolylineLabel,  0, 0 );
+  aParamLayout->addWidget( myPolyline,       0, 1 );
+  aParamLayout->addWidget( myProfileLabel,   1, 0 );
+  aParamLayout->addWidget( myProfile,        1, 1 );
+  aParamLayout->addWidget( myBathLabel,      2, 0 );
+  aParamLayout->addWidget( myBath,           2, 1 );
 
   // Common
   addWidget( aNameGroup );
@@ -69,6 +74,9 @@ HYDROGUI_Poly3DDlg::HYDROGUI_Poly3DDlg( HYDROGUI_Module* theModule, const QStrin
   addStretch();
 
   setMode( myIsEdit );
+
+  connect( myProfile, SIGNAL( selectionChanged() ), this, SLOT( OnSelectionChanged() ) );
+  connect( myBath, SIGNAL( selectionChanged() ), this, SLOT( OnSelectionChanged() ) );
 }
 
 HYDROGUI_Poly3DDlg::~HYDROGUI_Poly3DDlg()
@@ -97,19 +105,23 @@ QString HYDROGUI_Poly3DDlg::getResultName() const
   return myName->text();
 }
 
-void HYDROGUI_Poly3DDlg::setSelectedObjects( const QString& theName1,
-                                             const QString& theName2 )
+void HYDROGUI_Poly3DDlg::setSelectedObjects( const QString& theNamePoly,
+                                             const QString& theNameProfile,
+                                             const QString& theNameBath )
 {
-  myProfile->SetName( theName1 );
-  myPolyline->SetName( theName2 );
+  myPolyline->SetName( theNamePoly );
+  myProfile->SetName( theNameProfile );
+  myBath->SetName( theNameBath );
 }
 
-bool HYDROGUI_Poly3DDlg::getSelectedObjects( QString& theName1,
-                                             QString& theName2 ) const
+bool HYDROGUI_Poly3DDlg::getSelectedObjects( QString& theNamePoly,
+                                             QString& theNameProfile,
+                                             QString& theNameBath ) const
 {
-  theName1 = myProfile->GetName();
-  theName2 = myPolyline->GetName();
-  return !theName1.isEmpty() && !theName2.isEmpty();
+  theNamePoly = myPolyline->GetName();
+  theNameProfile = myProfile->GetName();
+  theNameBath = myBath->GetName();
+  return !theNamePoly.isEmpty() && ( !theNameProfile.isEmpty() || theNameBath.isEmpty() );
 }
 
 void HYDROGUI_Poly3DDlg::setPreselectedObject( const QString& theName )
@@ -118,3 +130,11 @@ void HYDROGUI_Poly3DDlg::setPreselectedObject( const QString& theName )
   myPolyline->SetChecked( true );
   myPolyline->SetName( QString() );
 }
+
+void HYDROGUI_Poly3DDlg::OnSelectionChanged()
+{
+  if( sender()==myProfile && !myProfile->GetName().isEmpty() )
+    myBath->Clear();
+  if( sender()==myBath && !myBath->GetName().isEmpty() )
+    myProfile->Clear();
+}
index e8aaced10ff976c5d94626f27b5e8d98bb441041..98e49dd283de2713cff283e7cc911b1119aae270 100644 (file)
@@ -46,23 +46,31 @@ public:
   void                       setResultName( const QString& theName );
   QString                    getResultName() const;
 
-  void                       setSelectedObjects( const QString& theName1,
-                                                 const QString& theName2 );
-  bool                       getSelectedObjects( QString& theName1,
-                                                 QString& theName2 ) const;
+  void                       setSelectedObjects( const QString& theNamePoly,
+                                                 const QString& theNameProfile,
+                                                 const QString& theNameBath );
+  bool                       getSelectedObjects( QString& theNamePoly,
+                                                 QString& theNameProfile,
+                                                 QString& theNameBath ) const;
 
   void                       setPreselectedObject( const QString& theName );
 
+protected slots:
+  void OnSelectionChanged();
+
 private:
   bool                       myIsEdit;
 
   QLineEdit*                 myName;
 
+  QLabel*                    myPolylineLabel;
+  HYDROGUI_ObjSelector*      myPolyline;
+
   QLabel*                    myProfileLabel;
   HYDROGUI_ObjSelector*      myProfile;
 
-  QLabel*                    myPolylineLabel;
-  HYDROGUI_ObjSelector*      myPolyline;
+  QLabel*                    myBathLabel;
+  HYDROGUI_ObjSelector*      myBath;
 };
 
 #endif
index 0b0e1deac0e47c40719f136fb89b3ded4fe4cbf6..74ea159aa4bf7d11278edda85f239a06092c746e 100644 (file)
@@ -31,6 +31,7 @@
 #include <HYDROData_Polyline3D.h>
 #include <HYDROData_Profile.h>
 #include <HYDROData_PolylineXY.h>
+#include <HYDROData_Bathymetry.h>
 
 #include <HYDROData_OperationsFactory.h>
 
@@ -73,16 +74,20 @@ void HYDROGUI_Poly3DOp::startOperation()
   }
   aPanel->setResultName( aPoly3DName );
 
-  QString aSelectedName1, aSelectedName2;
+  QString aPolyName, aProfileName, aBathName;
   if( myIsEdit && !myEditedObject.IsNull() )
   {
-    Handle(HYDROData_Entity) anObject1 = myEditedObject->GetProfileUZ()->GetFatherObject();
-    if( !anObject1.IsNull() )
-      aSelectedName1 = anObject1->GetName();
-    Handle(HYDROData_Entity) anObject2 = myEditedObject->GetPolylineXY();
-    if( !anObject2.IsNull() )
-      aSelectedName2 = anObject2->GetName();
-    aPanel->setSelectedObjects( aSelectedName1, aSelectedName2 );
+    Handle(HYDROData_Entity) aProfile = myEditedObject->GetProfileUZ()->GetFatherObject();
+    if( !aProfile.IsNull() )
+      aProfileName = aProfile->GetName();
+
+    Handle(HYDROData_Entity) aPoly = myEditedObject->GetPolylineXY();
+    if( !aPoly.IsNull() )
+      aPolyName = aPoly->GetName();
+
+    //TODO: use bathymetry from data model
+
+    aPanel->setSelectedObjects( aPolyName, aProfileName, aBathName );
   }
   else if( !myIsEdit )
   {
@@ -105,8 +110,8 @@ bool HYDROGUI_Poly3DOp::processApply( int& theUpdateFlags,
   if( aResultName.isEmpty() )
     return false;
 
-  QString aSelectedName1, aSelectedName2;
-  if( !aPanel->getSelectedObjects( aSelectedName1, aSelectedName2 ) )
+  QString aPolyName, aProfileName, aBathName;
+  if( !aPanel->getSelectedObjects( aPolyName, aProfileName, aBathName ) )
     return false;
 
   if( !myIsEdit || ( !myEditedObject.IsNull() && myEditedObject->GetName() != aResultName ) )
@@ -120,17 +125,21 @@ bool HYDROGUI_Poly3DOp::processApply( int& theUpdateFlags,
     }
   }
 
-  Handle(HYDROData_Entity) anObject1 =
-    HYDROGUI_Tool::FindObjectByName( module(), aSelectedName1, KIND_PROFILE ) ;
-  Handle(HYDROData_Entity) anObject2 =
-    HYDROGUI_Tool::FindObjectByName( module(), aSelectedName2, KIND_POLYLINEXY );
-  if( anObject1.IsNull() || anObject2.IsNull() )
+  Handle(HYDROData_Entity) aProfileEnt =
+    HYDROGUI_Tool::FindObjectByName( module(), aProfileName, KIND_PROFILE ) ;
+  Handle(HYDROData_Entity) aPolyEnt =
+    HYDROGUI_Tool::FindObjectByName( module(), aPolyName, KIND_POLYLINEXY );
+  Handle(HYDROData_Entity) aBathEnt =
+    HYDROGUI_Tool::FindObjectByName( module(), aBathName, KIND_BATHYMETRY );
+
+  if( aPolyEnt.IsNull() || ( aPolyEnt.IsNull() && aBathEnt.IsNull() ) )
     return false;
 
-  Handle(HYDROData_Profile) aProfile = Handle(HYDROData_Profile)::DownCast( anObject1 );
-  Handle(HYDROData_PolylineXY) aPolyline = Handle(HYDROData_PolylineXY)::DownCast( anObject2 );
+  Handle(HYDROData_Profile) aProfile = Handle(HYDROData_Profile)::DownCast( aProfileEnt );
+  Handle(HYDROData_Bathymetry) aBath = Handle(HYDROData_Bathymetry)::DownCast( aBathEnt );
+  Handle(HYDROData_PolylineXY) aPolyline = Handle(HYDROData_PolylineXY)::DownCast( aPolyEnt );
 
-  if( aProfile.IsNull() || aPolyline.IsNull() )
+  if( aProfile.IsNull() || ( aPolyline.IsNull() && aBath.IsNull() ) )
     return false;
 
   Handle(HYDROData_ProfileUZ) aProfileUZ = aProfile->GetProfileUZ();
@@ -155,6 +164,7 @@ bool HYDROGUI_Poly3DOp::processApply( int& theUpdateFlags,
   aResult->SetName( aResultName );
   aResult->SetProfileUZ( aProfileUZ );
   aResult->SetPolylineXY( aPolyline );
+  //TODO: set bathymetry
 
   if( !myIsEdit )
   {
@@ -166,8 +176,8 @@ bool HYDROGUI_Poly3DOp::processApply( int& theUpdateFlags,
   if( !myIsEdit )
   {
     size_t aViewId = HYDROGUI_Tool::GetActiveOCCViewId( module() );
-    module()->setObjectVisible( aViewId, anObject1, false );
-    module()->setObjectVisible( aViewId, anObject2, false );
+    module()->setObjectVisible( aViewId, aPolyline, false );
+    module()->setObjectVisible( aViewId, aProfile, false );
     module()->setObjectVisible( aViewId, aResult, true );
   }
 
index b53101fed24eb7d08547715296405324146c08f5..a64b53a4d7feae53fd01d87427521a05210d7630 100644 (file)
@@ -1240,6 +1240,10 @@ file cannot be correctly imported for a Bathymetry definition.</translation>
       <source>PROFILE</source>
       <translation>Profile</translation>
     </message>
+    <message>
+      <source>BATH</source>
+      <translation>Bathymetry</translation>
+    </message>
   </context>
   
   <context>