-// Copyright (C) 2013-2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2013-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <QKeyEvent>
#include <QMenu>
+#include <math.h>
+
// testing ImageViewer
/*
#include "GraphicsView_PrsImage.h"
// Name : GraphicsView_Viewer
// Purpose : Constructor
//=======================================================================
-GraphicsView_Viewer::GraphicsView_Viewer( const QString& title )
+GraphicsView_Viewer::GraphicsView_Viewer( const QString& title, QWidget* widget )
: SUIT_ViewModel(),
mySelector( 0 ),
myTransformer( 0 ),
+ myWidget( widget ),
myIsInitialized( false )
{
}
delete mySelector;
}
+GraphicsView_ViewFrame* GraphicsView_Viewer::createViewFrame( SUIT_Desktop* theDesktop, QWidget* theWidget )
+{
+ return new GraphicsView_ViewFrame( theDesktop, this, theWidget );
+}
+
//================================================================
// Function : createView
// Purpose :
//================================================================
SUIT_ViewWindow* GraphicsView_Viewer::createView( SUIT_Desktop* theDesktop )
{
- GraphicsView_ViewFrame* aViewFrame = new GraphicsView_ViewFrame( theDesktop, this );
+ GraphicsView_ViewFrame* aViewFrame = createViewFrame( theDesktop, myWidget );
connect( aViewFrame, SIGNAL( keyPressed( QKeyEvent* ) ),
this, SLOT( onKeyEvent( QKeyEvent* ) ) );
}
else if( e->button() == Qt::LeftButton &&
!( aViewPort->currentBlock() & GraphicsView_ViewPort::BS_Selection ) &&
- !aViewPort->getHighlightedObject() )
+ !aViewPort->getHighlightedObject() &&
+ ( !aViewPort->isDraggingSelectedByLeftButton() ||
+ aViewPort->isDraggingSelectedByLeftButton() && aViewPort->nbSelected() == 0 ) )
{
// Start rectangular selection if pulling was not started
QPoint p = aViewPort->mapFromScene( e->scenePos() );
{
if( GraphicsView_ViewPort* aViewPort = getActiveViewPort() )
{
+ if( aViewPort->hasInteractionFlag( GraphicsView_ViewPort::GlobalWheelScaling ) )
+ {
+ const double d = 1.05;
+ double q = pow( d, e->delta()/120 );
+ QGraphicsView::ViewportAnchor old_anchor = aViewPort->transformationAnchor();
+ aViewPort->setTransformationAnchor( QGraphicsView::AnchorUnderMouse );
+ aViewPort->scale( q, q );
+ aViewPort->setTransformationAnchor( old_anchor );
+ }
+
if( aViewPort->hasInteractionFlag( GraphicsView_ViewPort::WheelScaling ) )
{
bool anIsScaleUp = e->delta() > 0;