Skip to content

Commit

Permalink
[FEATURE] Move option to snap to grid to composer view menu, add inde…
Browse files Browse the repository at this point in the history
…pendant option to show/hide grid
  • Loading branch information
nyalldawson authored and mhugent committed Oct 29, 2013
1 parent 025e453 commit 71b762b
Show file tree
Hide file tree
Showing 10 changed files with 94 additions and 27 deletions.
3 changes: 3 additions & 0 deletions python/core/composer/qgscomposition.sip
Expand Up @@ -50,6 +50,9 @@ class QgsComposition : QGraphicsScene
void setSnapToGridEnabled( bool b );
bool snapToGridEnabled() const;

void setGridVisible( bool b );
bool gridVisible() const;

void setSnapGridResolution( double r );
double snapGridResolution() const;

Expand Down
28 changes: 28 additions & 0 deletions src/app/composer/qgscomposer.cpp
Expand Up @@ -170,6 +170,9 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
mActionPan->setCheckable( true );
mActionAddArrow->setCheckable( true );

mActionShowGrid->setCheckable( true );
mActionSnapGrid->setCheckable( true );

#ifdef Q_WS_MAC
mActionQuit->setText( tr( "Close" ) );
mActionQuit->setShortcut( QKeySequence::Close );
Expand Down Expand Up @@ -252,6 +255,9 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
viewMenu->addAction( mActionZoomAll );
viewMenu->addSeparator();
viewMenu->addAction( mActionRefreshView );
viewMenu->addSeparator();
viewMenu->addAction( mActionShowGrid );
viewMenu->addAction( mActionSnapGrid );

// Panel and toolbar submenus
mPanelMenu = new QMenu( tr( "Panels" ), this );
Expand Down Expand Up @@ -669,6 +675,24 @@ void QgsComposer::on_mActionRefreshView_triggered()
mComposition->update();
}

void QgsComposer::on_mActionShowGrid_triggered( bool checked )
{
//enable or disable snap items to grid
if ( mComposition )
{
mComposition->setGridVisible( checked );
}
}

void QgsComposer::on_mActionSnapGrid_triggered( bool checked )
{
//enable or disable snap items to grid
if ( mComposition )
{
mComposition->setSnapToGridEnabled( checked );
}
}

void QgsComposer::on_mActionExportAsPDF_triggered()
{
if ( !mComposition || !mView )
Expand Down Expand Up @@ -2077,6 +2101,10 @@ void QgsComposer::readXML( const QDomElement& composerElem, const QDomDocument&
mComposition->addItemsFromXML( composerElem, doc, &mMapsToRestore );
}

//restore grid settings
mActionSnapGrid->setChecked( mComposition->snapToGridEnabled() );
mActionShowGrid->setChecked( mComposition->gridVisible() );

// look for world file composer map, if needed
// Note: this must be done after maps have been added by addItemsFromXML
if ( mComposition->generateWorldFile() )
Expand Down
6 changes: 6 additions & 0 deletions src/app/composer/qgscomposer.h
Expand Up @@ -285,6 +285,12 @@ class QgsComposer: public QMainWindow, private Ui::QgsComposerBase
//!Redo last composer change
void on_mActionRedo_triggered();

//!Show/hide grid
void on_mActionShowGrid_triggered( bool checked );

//!Enable or disable snap items to grid
void on_mActionSnapGrid_triggered( bool checked );

//! Save window state
void saveWindowState();

Expand Down
11 changes: 0 additions & 11 deletions src/app/composer/qgscompositionwidget.cpp
Expand Up @@ -78,7 +78,6 @@ QgsCompositionWidget::QgsCompositionWidget( QWidget* parent, QgsComposition* c )
mAlignmentToleranceSpinBox->setValue( mComposition->alignmentSnapTolerance() );

//snap grid
mSnapToGridGroupCheckBox->setChecked( mComposition->snapToGridEnabled() );
mGridResolutionSpinBox->setValue( mComposition->snapGridResolution() );
mOffsetXSpinBox->setValue( mComposition->snapGridOffsetX() );
mOffsetYSpinBox->setValue( mComposition->snapGridOffsetY() );
Expand Down Expand Up @@ -416,7 +415,6 @@ void QgsCompositionWidget::displaySnapingSettings()
return;
}

mSnapToGridGroupCheckBox->setChecked( mComposition->snapToGridEnabled() );
mGridResolutionSpinBox->setValue( mComposition->snapGridResolution() );
mOffsetXSpinBox->setValue( mComposition->snapGridOffsetX() );
mOffsetYSpinBox->setValue( mComposition->snapGridOffsetY() );
Expand Down Expand Up @@ -501,14 +499,6 @@ void QgsCompositionWidget::on_mWorldFileMapComboBox_currentIndexChanged( int ind
}
}

void QgsCompositionWidget::on_mSnapToGridGroupCheckBox_toggled( bool state )
{
if ( mComposition )
{
mComposition->setSnapToGridEnabled( state );
}
}

void QgsCompositionWidget::on_mGridResolutionSpinBox_valueChanged( double d )
{
if ( mComposition )
Expand Down Expand Up @@ -606,7 +596,6 @@ void QgsCompositionWidget::blockSignals( bool block )
mPaperOrientationComboBox->blockSignals( block );
mResolutionSpinBox->blockSignals( block );
mPrintAsRasterCheckBox->blockSignals( block );
mSnapToGridGroupCheckBox->blockSignals( block );
mGridResolutionSpinBox->blockSignals( block );
mOffsetXSpinBox->blockSignals( block );
mOffsetYSpinBox->blockSignals( block );
Expand Down
1 change: 0 additions & 1 deletion src/app/composer/qgscompositionwidget.h
Expand Up @@ -53,7 +53,6 @@ class QgsCompositionWidget: public QWidget, private Ui::QgsCompositionWidgetBase
void on_mGenerateWorldFileCheckBox_toggled( bool state );
void on_mWorldFileMapComboBox_currentIndexChanged( int index );

void on_mSnapToGridGroupCheckBox_toggled( bool state );
void on_mGridResolutionSpinBox_valueChanged( double d );
void on_mOffsetXSpinBox_valueChanged( double d );
void on_mOffsetYSpinBox_valueChanged( double d );
Expand Down
25 changes: 25 additions & 0 deletions src/core/composer/qgscomposition.cpp
Expand Up @@ -60,6 +60,7 @@ QgsComposition::QgsComposition( QgsMapRenderer* mapRenderer )
, mUseAdvancedEffects( true )
, mSelectionTolerance( 0.0 )
, mSnapToGrid( false )
, mGridVisible( false )
, mSnapGridResolution( 10.0 )
, mSnapGridTolerance( 2 )
, mSnapGridOffsetX( 0.0 )
Expand Down Expand Up @@ -98,6 +99,7 @@ QgsComposition::QgsComposition()
mUseAdvancedEffects( true ),
mSelectionTolerance( 0.0 ),
mSnapToGrid( false ),
mGridVisible( false ),
mSnapGridResolution( 10.0 ),
mSnapGridTolerance( 2 ),
mSnapGridOffsetX( 0.0 ),
Expand Down Expand Up @@ -437,6 +439,14 @@ bool QgsComposition::writeXML( QDomElement& composerElem, QDomDocument& doc )
{
compositionElem.setAttribute( "snapping", "0" );
}
if ( mGridVisible )
{
compositionElem.setAttribute( "gridVisible", "1" );
}
else
{
compositionElem.setAttribute( "gridVisible", "0" );
}
compositionElem.setAttribute( "snapGridResolution", QString::number( mSnapGridResolution ) );
compositionElem.setAttribute( "snapGridTolerance", QString::number( mSnapGridTolerance ) );
compositionElem.setAttribute( "snapGridOffsetX", QString::number( mSnapGridOffsetX ) );
Expand Down Expand Up @@ -526,6 +536,14 @@ bool QgsComposition::readXML( const QDomElement& compositionElem, const QDomDocu
{
mSnapToGrid = true;
}
if ( compositionElem.attribute( "gridVisible" ) == "0" )
{
mGridVisible = false;
}
else
{
mGridVisible = true;
}
mSnapGridResolution = compositionElem.attribute( "snapGridResolution" ).toDouble();
mSnapGridTolerance = compositionElem.attribute( "snapGridTolerance", "2.0" ).toDouble();
mSnapGridOffsetX = compositionElem.attribute( "snapGridOffsetX" ).toDouble();
Expand Down Expand Up @@ -1548,6 +1566,13 @@ void QgsComposition::setSnapToGridEnabled( bool b )
saveSettings();
}

void QgsComposition::setGridVisible( bool b )
{
mGridVisible = b;
updatePaperItems();
saveSettings();
}

void QgsComposition::setSnapGridResolution( double r )
{
mSnapGridResolution = r;
Expand Down
4 changes: 4 additions & 0 deletions src/core/composer/qgscomposition.h
Expand Up @@ -111,6 +111,9 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene
void setSnapToGridEnabled( bool b );
bool snapToGridEnabled() const {return mSnapToGrid;}

void setGridVisible( bool b );
bool gridVisible() const {return mGridVisible;}

void setSnapGridResolution( double r );
double snapGridResolution() const {return mSnapGridResolution;}

Expand Down Expand Up @@ -425,6 +428,7 @@ class CORE_EXPORT QgsComposition : public QGraphicsScene

/**Parameters for snap to grid function*/
bool mSnapToGrid;
bool mGridVisible;
double mSnapGridResolution;
double mSnapGridTolerance;
double mSnapGridOffsetX;
Expand Down
2 changes: 1 addition & 1 deletion src/core/composer/qgspaperitem.cpp
Expand Up @@ -43,7 +43,7 @@ void QgsPaperGrid::paint( QPainter* painter, const QStyleOptionGraphicsItem* ite
//draw grid
if ( mComposition )
{
if ( mComposition->snapToGridEnabled() && mComposition->plotStyle() == QgsComposition::Preview
if ( mComposition->gridVisible() && mComposition->plotStyle() == QgsComposition::Preview
&& mComposition->snapGridResolution() > 0 )
{
int gridMultiplyX = ( int )( mComposition->snapGridOffsetX() / mComposition->snapGridResolution() );
Expand Down
26 changes: 24 additions & 2 deletions src/ui/qgscomposerbase.ui
Expand Up @@ -285,6 +285,28 @@
<string>Refresh view</string>
</property>
</action>
<action name="mActionShowGrid">
<property name="text">
<string>Show Grid</string>
</property>
<property name="toolTip">
<string>Show grid</string>
</property>
<property name="shortcut">
<string>Ctrl+'</string>
</property>
</action>
<action name="mActionSnapGrid">
<property name="text">
<string>Snap to Grid</string>
</property>
<property name="toolTip">
<string>Snap to grid</string>
</property>
<property name="shortcut">
<string>Ctrl+&quot;</string>
</property>
</action>
<action name="mActionAddImage">
<property name="icon">
<iconset resource="../../images/images.qrc">
Expand Down Expand Up @@ -688,7 +710,7 @@
<property name="shortcut">
<string>Ctrl+Alt+]</string>
</property>
</action>
</action>
<action name="mActionPan">
<property name="icon">
<iconset resource="../../images/images.qrc">
Expand All @@ -697,7 +719,7 @@
<property name="text">
<string>Pan Composer</string>
</property>
</action>
</action>
</widget>
<resources>
<include location="../../images/images.qrc"/>
Expand Down
15 changes: 3 additions & 12 deletions src/ui/qgscompositionwidgetbase.ui
Expand Up @@ -23,16 +23,7 @@
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<property name="margin">
<number>0</number>
</property>
<item>
Expand Down Expand Up @@ -320,10 +311,10 @@
<item>
<widget class="QgsCollapsibleGroupBoxBasic" name="mSnapToGridGroupCheckBox">
<property name="title">
<string>Snap to grid</string>
<string>Grid</string>
</property>
<property name="checkable">
<bool>true</bool>
<bool>false</bool>
</property>
<property name="checked">
<bool>false</bool>
Expand Down

0 comments on commit 71b762b

Please sign in to comment.