Salome HOME
0022379: EDF 2276 GEOM: Dependency Tree - added resize event for view and new method...
authormpa <mpa@opencascade.com>
Fri, 7 Nov 2014 07:33:47 +0000 (10:33 +0300)
committermpa <mpa@opencascade.com>
Fri, 7 Nov 2014 07:33:47 +0000 (10:33 +0300)
src/DependencyTree/DependencyTree_View.cxx
src/DependencyTree/DependencyTree_View.h

index b1afd4085087530b5bf100b6226b02d02df3fb89..1ccb309f1922190e05530b5cd4875527c701363a 100644 (file)
@@ -351,6 +351,18 @@ void DependencyTree_View::onRebuildModel()
   updateModel( true, false );
 }
 
+//=================================================================================
+// function : resizeEvent()
+// purpose  : reimplemented from QGraphicsView::resizeEvent()
+//=================================================================================
+void DependencyTree_View::resizeEvent(QResizeEvent *event)
+{
+  QPointF aCenter = mapToScene( event->oldSize().width()/2,
+                                event->oldSize().height()/2 );
+  QGraphicsView::resizeEvent( event );
+  centerOn( aCenter.x(),aCenter.y() );
+}
+
 //=================================================================================
 // function : onUpdateModel()
 // purpose  : slot for updating tree model for main objects in viewer
@@ -689,7 +701,7 @@ void DependencyTree_View::updateView()
     return;
 
   drawTree();
-  fitAll();
+  fitWindow();
 }
 
 //=================================================================================
@@ -734,6 +746,23 @@ void DependencyTree_View::clearView( bool isClearModel )
   }
 }
 
+//=================================================================================
+// function : fitWindow()
+// purpose  : scale the window considering a size of scene
+//=================================================================================
+void DependencyTree_View::fitWindow()
+{
+  int sizeFactor = 4;
+  if( objectsBoundingRect(true).width() > sizeFactor*size().width() ||
+      objectsBoundingRect(true).height() > sizeFactor*size().width() ) {
+    QRectF aRect = QRectF( -sizeFactor*size().width()/2, -sizeFactor*size().height()/2,
+                           sizeFactor*size().width(), sizeFactor*size().height() );
+    fitInView( aRect, Qt::KeepAspectRatio );
+  }
+  else
+    fitAll();
+}
+
 //=================================================================================
 // function : getNewTreeModel()
 // purpose  : get dependency tree model from engine
index 298933729ecbddf6785d3e3b3aa2266f04a617bd..94e92474966a7e18f7cc44d448a1ca6f17d6bff7 100644 (file)
@@ -68,6 +68,10 @@ public slots:
 
   void                    onRebuildModel();
 
+protected:
+
+  void                    resizeEvent( QResizeEvent *event );
+
 private slots:
 
   void                    onUpdateModel();
@@ -93,6 +97,8 @@ private:
   void                    updateView();
   void                    clearView( bool );
 
+  void                    fitWindow();
+
   int                     checkMaxLevelsNumber();
 
   void                    getNewTreeModel( bool = true, bool = true );