Salome HOME
refs #430: incorrect coordinates in dump polyline
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Tool.cxx
index ccea02da1c095767d823957baa15b069e0dd71d3..51404eaed7eb174fdea98388e12def5033e3eca9 100644 (file)
@@ -68,6 +68,8 @@
 // encoding instead of default 'System'
 #define USE_LATIN1_ENCODING
 
+// #define DEB_GROUPS 1
+
 QString HYDROGUI_Tool::ToQString( const TCollection_AsciiString& src )
 {
 #ifdef USE_LATIN1_ENCODING
@@ -227,7 +229,12 @@ bool HYDROGUI_Tool::IsObjectHasPresentation( const Handle(HYDROData_Entity)& the
          anObjectKind == KIND_STREAM ||
          anObjectKind == KIND_CHANNEL ||
          anObjectKind == KIND_DIGUE ||
-         anObjectKind == KIND_DUMMY_3D )
+         anObjectKind == KIND_DUMMY_3D
+#ifdef DEB_GROUPS
+         || anObjectKind == KIND_SHAPES_GROUP ||
+         anObjectKind == KIND_SPLITTED_GROUP
+#endif
+         )
     {
       return true;
     }
@@ -383,7 +390,8 @@ ObjectKind HYDROGUI_Tool::GetSelectedPartition( HYDROGUI_Module* theModule )
   return KIND_UNKNOWN;
 }
 
-QStringList HYDROGUI_Tool::GetSelectedGeomObjects( HYDROGUI_Module* theModule )
+QStringList HYDROGUI_Tool::GetSelectedGeomObjects( HYDROGUI_Module* theModule,
+                                                   QList<GEOM::shape_type> theTypes )
 {
   QStringList anEntryList;
 
@@ -414,7 +422,8 @@ QStringList HYDROGUI_Tool::GetSelectedGeomObjects( HYDROGUI_Module* theModule )
           GEOM::GEOM_Object_var aGeomObj = 
             GEOMBase::GetObjectFromIOR( aSObject->GetIOR().c_str() );
 
-          if ( !aGeomObj->_is_nil() && aGeomObj->IsShape() ) {
+          if ( !aGeomObj->_is_nil() && aGeomObj->IsShape() && 
+               theTypes.contains( aGeomObj->GetShapeType() ) ) {
             anEntryList << anEntry;
           }
         }
@@ -429,16 +438,26 @@ Handle(HYDROData_Entity) HYDROGUI_Tool::FindObjectByName( HYDROGUI_Module* theMo
                                                           const QString&   theName,
                                                           const ObjectKind theObjectKind )
 {
+  Handle(HYDROData_Entity) aResObj;
+  
   Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
-  return HYDROData_Tool::FindObjectByName( aDocument, theName, theObjectKind );
+  if ( !aDocument.IsNull() )
+    aResObj = aDocument->FindObjectByName( theName, theObjectKind );
+  
+  return aResObj;
 }
 
 HYDROData_SequenceOfObjects HYDROGUI_Tool::FindObjectsByNames( HYDROGUI_Module*   theModule,
                                                                const QStringList& theNames,
                                                                const ObjectKind   theObjectKind )
 {
+  HYDROData_SequenceOfObjects aResSeq;
+
   Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
-  return HYDROData_Tool::FindObjectsByNames( aDocument, theNames, theObjectKind );
+  if ( !aDocument.IsNull() )
+    aResSeq = aDocument->FindObjectsByNames( theNames, theObjectKind );
+
+  return aResSeq;
 }
 
 QString HYDROGUI_Tool::GenerateObjectName( HYDROGUI_Module*   theModule,
@@ -653,8 +672,7 @@ QColor HYDROGUI_Tool::GenerateFillingColor( const Handle(HYDROData_Document)& th
   {
     const QString& aZoneName = aZoneNameIter.next();
     Handle(HYDROData_ImmersibleZone) aRefZone = 
-      Handle(HYDROData_ImmersibleZone)::DownCast(
-        HYDROData_Tool::FindObjectByName( theDoc, aZoneName, KIND_IMMERSIBLE_ZONE ) );
+      Handle(HYDROData_ImmersibleZone)::DownCast( theDoc->FindObjectByName( aZoneName, KIND_IMMERSIBLE_ZONE ) );
     if( !aRefZone.IsNull() )
     {
       QColor aRefColor = aRefZone->GetFillingColor();
@@ -689,7 +707,14 @@ QStringList HYDROGUI_Tool::FindExistingObjectsNames( const Handle(HYDROData_Docu
   return aNames;
 }
 
-QString HYDROGUI_Tool::GetCoordinateString( const double theNumber )
+QString HYDROGUI_Tool::GetCoordinateString( const double theNumber, bool isInLocale )
 {
-  return QString::number( theNumber, 'f', 2 );
-}
\ No newline at end of file
+  if( isInLocale )
+  {
+    static QLocale aLocale( QLocale::English, QLocale::France );
+    return aLocale.toString( theNumber, 'f', 2 );
+  }
+  else
+    return QString::number( theNumber, 'f', 2 );
+}
+