mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-17 00:09:36 -04:00
Port zoom actions from composer to layout designer
This commit is contained in:
parent
cf488d34a4
commit
ac83093570
@ -73,6 +73,45 @@ class QgsLayoutView: QGraphicsView
|
|||||||
of the scale applied. The ``scale`` parameter specifies the zoom factor to scale the view by.
|
of the scale applied. The ``scale`` parameter specifies the zoom factor to scale the view by.
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
void setZoomLevel( double level );
|
||||||
|
%Docstring
|
||||||
|
Sets the zoom ``level`` for the view, where a zoom level of 1.0 corresponds to 100%.
|
||||||
|
%End
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
|
||||||
|
void zoomFull();
|
||||||
|
%Docstring
|
||||||
|
Zooms the view to the full extent of the layout.
|
||||||
|
.. seealso:: zoomIn()
|
||||||
|
.. seealso:: zoomOut()
|
||||||
|
.. seealso:: zoomActual()
|
||||||
|
%End
|
||||||
|
|
||||||
|
void zoomIn();
|
||||||
|
%Docstring
|
||||||
|
Zooms in to the view by a preset amount.
|
||||||
|
.. seealso:: zoomFull()
|
||||||
|
.. seealso:: zoomOut()
|
||||||
|
.. seealso:: zoomActual()
|
||||||
|
%End
|
||||||
|
|
||||||
|
void zoomOut();
|
||||||
|
%Docstring
|
||||||
|
Zooms out of the view by a preset amount.
|
||||||
|
.. seealso:: zoomFull()
|
||||||
|
.. seealso:: zoomIn()
|
||||||
|
.. seealso:: zoomActual()
|
||||||
|
%End
|
||||||
|
|
||||||
|
void zoomActual();
|
||||||
|
%Docstring
|
||||||
|
Zooms to the actual size of the layout.
|
||||||
|
.. seealso:: zoomFull()
|
||||||
|
.. seealso:: zoomIn()
|
||||||
|
.. seealso:: zoomOut()
|
||||||
|
%End
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void layoutSet( QgsLayout *layout );
|
void layoutSet( QgsLayout *layout );
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "qgslayoutviewtoolselect.h"
|
#include "qgslayoutviewtoolselect.h"
|
||||||
#include "qgsgui.h"
|
#include "qgsgui.h"
|
||||||
#include "qgslayoutitemguiregistry.h"
|
#include "qgslayoutitemguiregistry.h"
|
||||||
|
#include <QShortcut>
|
||||||
|
|
||||||
QgsAppLayoutDesignerInterface::QgsAppLayoutDesignerInterface( QgsLayoutDesignerDialog *dialog )
|
QgsAppLayoutDesignerInterface::QgsAppLayoutDesignerInterface( QgsLayoutDesignerDialog *dialog )
|
||||||
: QgsLayoutDesignerInterface( dialog )
|
: QgsLayoutDesignerInterface( dialog )
|
||||||
@ -112,6 +113,15 @@ QgsLayoutDesignerDialog::QgsLayoutDesignerDialog( QWidget *parent, Qt::WindowFla
|
|||||||
mToolsActionGroup->addAction( mActionSelectMoveItem );
|
mToolsActionGroup->addAction( mActionSelectMoveItem );
|
||||||
connect( mActionSelectMoveItem, &QAction::triggered, mSelectTool, [ = ] { mView->setTool( mSelectTool ); } );
|
connect( mActionSelectMoveItem, &QAction::triggered, mSelectTool, [ = ] { mView->setTool( mSelectTool ); } );
|
||||||
|
|
||||||
|
//Ctrl+= should also trigger zoom in
|
||||||
|
QShortcut *ctrlEquals = new QShortcut( QKeySequence( QStringLiteral( "Ctrl+=" ) ), this );
|
||||||
|
connect( ctrlEquals, &QShortcut::activated, mActionZoomIn, &QAction::trigger );
|
||||||
|
|
||||||
|
connect( mActionZoomIn, &QAction::triggered, mView, &QgsLayoutView::zoomIn );
|
||||||
|
connect( mActionZoomOut, &QAction::triggered, mView, &QgsLayoutView::zoomOut );
|
||||||
|
connect( mActionZoomAll, &QAction::triggered, mView, &QgsLayoutView::zoomFull );
|
||||||
|
connect( mActionZoomActual, &QAction::triggered, mView, &QgsLayoutView::zoomActual );
|
||||||
|
|
||||||
mView->setTool( mSelectTool );
|
mView->setTool( mSelectTool );
|
||||||
mView->setFocus();
|
mView->setFocus();
|
||||||
|
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
#include "qgslayoutviewtooltemporarymousepan.h"
|
#include "qgslayoutviewtooltemporarymousepan.h"
|
||||||
#include "qgssettings.h"
|
#include "qgssettings.h"
|
||||||
#include "qgsrectangle.h"
|
#include "qgsrectangle.h"
|
||||||
|
#include "qgsapplication.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <QDesktopWidget>
|
||||||
|
|
||||||
#define MIN_VIEW_SCALE 0.05
|
#define MIN_VIEW_SCALE 0.05
|
||||||
#define MAX_VIEW_SCALE 1000.0
|
#define MAX_VIEW_SCALE 1000.0
|
||||||
@ -95,6 +97,38 @@ void QgsLayoutView::scaleSafe( double scale )
|
|||||||
setTransform( QTransform::fromScale( scale, scale ) );
|
setTransform( QTransform::fromScale( scale, scale ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsLayoutView::setZoomLevel( double level )
|
||||||
|
{
|
||||||
|
double dpi = QgsApplication::desktop()->logicalDpiX();
|
||||||
|
//monitor dpi is not always correct - so make sure the value is sane
|
||||||
|
if ( ( dpi < 60 ) || ( dpi > 1200 ) )
|
||||||
|
dpi = 72;
|
||||||
|
|
||||||
|
//desired pixel width for 1mm on screen
|
||||||
|
double scale = qBound( MIN_VIEW_SCALE, level * dpi / 25.4, MAX_VIEW_SCALE );
|
||||||
|
setTransform( QTransform::fromScale( scale, scale ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsLayoutView::zoomFull()
|
||||||
|
{
|
||||||
|
fitInView( scene()->sceneRect(), Qt::KeepAspectRatio );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsLayoutView::zoomIn()
|
||||||
|
{
|
||||||
|
scaleSafe( 2 );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsLayoutView::zoomOut()
|
||||||
|
{
|
||||||
|
scaleSafe( 0.5 );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QgsLayoutView::zoomActual()
|
||||||
|
{
|
||||||
|
setZoomLevel( 1.0 );
|
||||||
|
}
|
||||||
|
|
||||||
void QgsLayoutView::mousePressEvent( QMouseEvent *event )
|
void QgsLayoutView::mousePressEvent( QMouseEvent *event )
|
||||||
{
|
{
|
||||||
if ( mTool )
|
if ( mTool )
|
||||||
|
@ -94,6 +94,45 @@ class GUI_EXPORT QgsLayoutView: public QGraphicsView
|
|||||||
*/
|
*/
|
||||||
void scaleSafe( double scale );
|
void scaleSafe( double scale );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the zoom \a level for the view, where a zoom level of 1.0 corresponds to 100%.
|
||||||
|
*/
|
||||||
|
void setZoomLevel( double level );
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zooms the view to the full extent of the layout.
|
||||||
|
* \see zoomIn()
|
||||||
|
* \see zoomOut()
|
||||||
|
* \see zoomActual()
|
||||||
|
*/
|
||||||
|
void zoomFull();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zooms in to the view by a preset amount.
|
||||||
|
* \see zoomFull()
|
||||||
|
* \see zoomOut()
|
||||||
|
* \see zoomActual()
|
||||||
|
*/
|
||||||
|
void zoomIn();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zooms out of the view by a preset amount.
|
||||||
|
* \see zoomFull()
|
||||||
|
* \see zoomIn()
|
||||||
|
* \see zoomActual()
|
||||||
|
*/
|
||||||
|
void zoomOut();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Zooms to the actual size of the layout.
|
||||||
|
* \see zoomFull()
|
||||||
|
* \see zoomIn()
|
||||||
|
* \see zoomOut()
|
||||||
|
*/
|
||||||
|
void zoomActual();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -83,7 +83,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1083</width>
|
<width>1083</width>
|
||||||
<height>42</height>
|
<height>25</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="mLayoutMenu">
|
<widget class="QMenu" name="mLayoutMenu">
|
||||||
@ -97,9 +97,34 @@
|
|||||||
<string>&Items</string>
|
<string>&Items</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QMenu" name="mMenuView">
|
||||||
|
<property name="title">
|
||||||
|
<string>View</string>
|
||||||
|
</property>
|
||||||
|
<addaction name="mActionZoomIn"/>
|
||||||
|
<addaction name="mActionZoomOut"/>
|
||||||
|
<addaction name="mActionZoomActual"/>
|
||||||
|
<addaction name="mActionZoomAll"/>
|
||||||
|
</widget>
|
||||||
<addaction name="mLayoutMenu"/>
|
<addaction name="mLayoutMenu"/>
|
||||||
|
<addaction name="mMenuView"/>
|
||||||
<addaction name="mItemMenu"/>
|
<addaction name="mItemMenu"/>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QToolBar" name="mNavigationToolbar">
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>toolBar</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="toolBarArea">
|
||||||
|
<enum>TopToolBarArea</enum>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="toolBarBreak">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<addaction name="mActionZoomIn"/>
|
||||||
|
<addaction name="mActionZoomOut"/>
|
||||||
|
<addaction name="mActionZoomActual"/>
|
||||||
|
<addaction name="mActionZoomAll"/>
|
||||||
|
</widget>
|
||||||
<action name="mActionClose">
|
<action name="mActionClose">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Close</string>
|
<string>&Close</string>
|
||||||
@ -162,6 +187,66 @@
|
|||||||
<string>V</string>
|
<string>V</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="mActionZoomAll">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../images/images.qrc">
|
||||||
|
<normaloff>:/images/themes/default/mActionZoomFullExtent.svg</normaloff>:/images/themes/default/mActionZoomFullExtent.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Zoom &Full</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Zoom full</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>Ctrl+0</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="mActionZoomIn">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../images/images.qrc">
|
||||||
|
<normaloff>:/images/themes/default/mActionZoomIn.svg</normaloff>:/images/themes/default/mActionZoomIn.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Zoom &In</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Zoom in</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>Ctrl++</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="mActionZoomOut">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../images/images.qrc">
|
||||||
|
<normaloff>:/images/themes/default/mActionZoomOut.svg</normaloff>:/images/themes/default/mActionZoomOut.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Zoom &Out</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Zoom out</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>Ctrl+-</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="mActionZoomActual">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../../images/images.qrc">
|
||||||
|
<normaloff>:/images/themes/default/mActionZoomActual.svg</normaloff>:/images/themes/default/mActionZoomActual.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Zoom to &100%</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Zoom to 100%</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut">
|
||||||
|
<string>Ctrl+1</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../../images/images.qrc"/>
|
<include location="../../../images/images.qrc"/>
|
||||||
@ -189,6 +274,7 @@
|
|||||||
<include location="../../../images/images.qrc"/>
|
<include location="../../../images/images.qrc"/>
|
||||||
<include location="../../../images/images.qrc"/>
|
<include location="../../../images/images.qrc"/>
|
||||||
<include location="../../../images/images.qrc"/>
|
<include location="../../../images/images.qrc"/>
|
||||||
|
<include location="../../../images/images.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user