]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
refs #524: fix preview selection problem
authormzn <mzn@opencascade.com>
Mon, 1 Jun 2015 06:23:20 +0000 (09:23 +0300)
committermzn <mzn@opencascade.com>
Mon, 1 Jun 2015 06:23:20 +0000 (09:23 +0300)
src/HYDROData/HYDROData_PolylineXY.cxx
src/HYDROGUI/HYDROGUI_OCCSelector.cxx
src/HYDROGUI/HYDROGUI_RecognizeContoursOp.cxx

index 44076c82ad77fad66ca4d3d54d08e2cdbf6931d3..32f2ddabdc1d7a21e19920f2f29c3dbb76db9f6f 100755 (executable)
@@ -1162,6 +1162,6 @@ void HYDROData_PolylineXY::Transform( const QTransform& theTrsf )
     SetPoints( i, aPoints );
   }
 
-  SetToUpdate( true );
+  Update();
 }
 
index eebfdf3575b8dba74f9c0cbd283dcf59b57294b6..750593296731d62ab2f7d1195845b7254b41a14f 100644 (file)
@@ -70,11 +70,36 @@ void HYDROGUI_OCCSelector::setSelection( const SUIT_DataOwnerPtrList& aList )
     return;
 
   Handle(AIS_InteractiveContext) aContext = aViewer->getAISContext();
-  if ( aContext->HasOpenedContext() ) {
+  if ( aContext.IsNull() || aContext->HasOpenedContext() ) {
     return;
   }
 
-  LightApp_OCCSelector::setSelection( aList );
+  //@MZN LightApp_OCCSelector::setSelection( aList );
+  QMap<QString, Handle(AIS_InteractiveObject)> aDisplayed;
+    
+  AIS_ListOfInteractive aDispList, aSelList;
+  aContext->DisplayedObjects( aDispList );
+
+  for ( AIS_ListIteratorOfListOfInteractive it( aDispList ); it.More(); it.Next() )
+  {
+    QString entryStr = entry( it.Value() );
+    if ( !entryStr.isEmpty() )
+      aDisplayed.insert( entryStr, it.Value() );
+  }
+  
+  mySelectedExternals.clear();
+
+  for ( SUIT_DataOwnerPtrList::const_iterator itr = aList.begin(); itr != aList.end(); ++itr )
+  {
+    const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*>( (*itr).operator->() );
+    if ( owner && aDisplayed.contains( owner->entry() ) )
+      aSelList.Append( aDisplayed[owner->entry()] );
+    else
+      mySelectedExternals.append(*itr);
+  }
+
+  //@MZNmyViewer->unHighlightAll( false );
+  aViewer->setObjectsSelected( aSelList );
 }
 
 QString HYDROGUI_OCCSelector::entry( const Handle(AIS_InteractiveObject)& anAIS ) const
index 8dd8cbf602608a1fe5b81457e5482de11b720507..a3166c19372857cd137d367de2755f49384b8678 100644 (file)
@@ -24,6 +24,7 @@
 #include "HYDROGUI_Tool.h"
 #include "HYDROGUI_UpdateFlags.h"
 #include "HYDROGUI_OCCSelector.h"
+#include "HYDROGUI_ZLayers.h" //@MZN
 
 #include <HYDROData_Document.h>
 #include <HYDROData_GeomTool.h>
@@ -348,6 +349,15 @@ void HYDROGUI_RecognizeContoursOp::updateRecognizedPolylines()
       }
     }
 
+    QTransform aTrsf = myImage->Trsf();
+    QImage anImage = myImage->Image();
+    QRectF aRect( QPointF( 0, 0 ), QPointF( anImage.width(), anImage.height() ) );
+    aRect = aTrsf.mapRect( aRect );
+    aTrsf.setMatrix( aTrsf.m11(), aTrsf.m12(),  aTrsf.m13(),
+                     aTrsf.m21(), -aTrsf.m22(), aTrsf.m23(),
+                     aTrsf.m31() + aRect.width() * 0.5, aTrsf.m32 () - aRect.height() * 0.5, aTrsf.m33() );
+
+    /* @MZN
     QTransform aTrsf = myImage->Trsf();
     gp_Mat aMat( aTrsf.m11(), aTrsf.m21(), 0, 
                  aTrsf.m12(), -aTrsf.m22(), 0, 
@@ -359,28 +369,37 @@ void HYDROGUI_RecognizeContoursOp::updateRecognizedPolylines()
                  aTrsf.m32() - aRect.height() * 0.5, 0 );
 
     BRepBuilderAPI_GTransform aBuilder( gp_GTrsf( aMat, aVec ) );
+    */
 
+    Handle(HYDROData_PolylineXY) aPolylineObj = Handle(HYDROData_PolylineXY)::DownCast( doc()->CreateObject( KIND_POLYLINEXY ) );
     QStringList aNamesList;
     for ( int i = 1; i <= aSubShapes.Length(); i++ ) {
       TopoDS_Shape aSubShape = aSubShapes.Value( i );
 
       // Transform the sub-shape
+      aPolylineObj->ImportShape( aSubShape );
+      aPolylineObj->Transform( aTrsf );
+
+      /*
       aBuilder.Perform( aSubShape, Standard_True );
       if ( aBuilder.IsDone() ) {
         aSubShape = aBuilder.Shape();
-      }
+      }*/
       
       HYDROGUI_Shape* aShape = new HYDROGUI_Shape( aCtx, NULL, getPreviewZLayer() );
-      aShape->setShape( aSubShape, true, false );
+      aShape->setShape( aPolylineObj->GetShape(), true, false );
       aShape->setBorderColor( HYDROData_PolylineXY::DefaultWireColor(), false, false );
-
+      
       QString aPrefix = QString("%1_%2_%3").arg( myImage->GetName(), "Contour", QString::number( i ) );
       QString aName = HYDROGUI_Tool::GenerateObjectName( module(), aPrefix, QStringList(), true );
       myPolylineShapes.insert( aName, aShape);
       aNamesList << aName;
     }
 
+    aPolylineObj->Remove();
+
     if ( !aCtx.IsNull() ) {
+      UpdateZLayersOfHilightPresentationsOfDisplayedObjects( aCtx, Graphic3d_ZLayerId_TopOSD );
       aCtx->UpdateCurrentViewer();
     }