diff --git a/src/app/composer/qgscomposer.cpp b/src/app/composer/qgscomposer.cpp
index 703165f59dc..911458b8bef 100644
--- a/src/app/composer/qgscomposer.cpp
+++ b/src/app/composer/qgscomposer.cpp
@@ -303,6 +303,9 @@ QgsComposer::QgsComposer( QgisApp *qgis, const QString& title )
layoutMenu->addAction( mActionLockItems );
layoutMenu->addAction( mActionUnlockAll );
+ QMenu *settingsMenu = menuBar()->addMenu( tr( "Settings" ) );
+ settingsMenu->addAction( mActionOptions );
+
#ifdef Q_WS_MAC
// this doesn't work on Mac anymore: menuBar()->addMenu( mQgis->windowMenu() );
// QgsComposer::populateWithOtherMenu should work recursively with submenus and regardless of Qt version
@@ -659,6 +662,11 @@ void QgsComposer::showItemOptions( QgsComposerItem* item )
mItemDock->setWidget( newWidget );
}
+void QgsComposer::on_mActionOptions_triggered()
+{
+ mQgis->showOptionsDialog( this, QString("mOptionsPageComposer") );
+}
+
QgsMapCanvas *QgsComposer::mapCanvas( void )
{
return mQgis->mapCanvas();
diff --git a/src/app/composer/qgscomposer.h b/src/app/composer/qgscomposer.h
index c5f7e90fce3..d2d02960672 100644
--- a/src/app/composer/qgscomposer.h
+++ b/src/app/composer/qgscomposer.h
@@ -306,6 +306,9 @@ class QgsComposer: public QMainWindow, private Ui::QgsComposerBase
//!Clear guides
void on_mActionClearGuides_triggered();
+ //!Show options dialog
+ void on_mActionOptions_triggered();
+
//! Save window state
void saveWindowState();
diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp
index 5bfbf46fed2..74f27a94c9b 100644
--- a/src/app/qgisapp.cpp
+++ b/src/app/qgisapp.cpp
@@ -6839,8 +6839,12 @@ void QgisApp::customize()
QgsCustomization::instance()->openDialog( this );
}
-
void QgisApp::options()
+{
+ showOptionsDialog( this );
+}
+
+void QgisApp::showOptionsDialog( QWidget *parent, QString currentPage )
{
if ( mMapCanvas && mMapCanvas->isDrawing() )
{
@@ -6850,7 +6854,12 @@ void QgisApp::options()
QSettings mySettings;
QString oldScales = mySettings.value( "Map/scales", PROJECT_SCALES ).toString();
- QgsOptions *optionsDialog = new QgsOptions( this );
+ QgsOptions *optionsDialog = new QgsOptions( parent );
+ if ( !currentPage.isEmpty() )
+ {
+ optionsDialog->setCurrentPage( currentPage );
+ }
+
if ( optionsDialog->exec() )
{
// set the theme if it changed
diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h
index e545729afb3..28f246f64a3 100644
--- a/src/app/qgisapp.h
+++ b/src/app/qgisapp.h
@@ -618,6 +618,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
//! Update project menu with the project templates
void updateProjectFromTemplates();
+ //! Opens the options dialog
+ void showOptionsDialog( QWidget *parent = 0, QString currentPage = QString() );
+
protected:
//! Handle state changes (WindowTitleChange)
diff --git a/src/app/qgsoptions.cpp b/src/app/qgsoptions.cpp
index f42a68c64e7..e81e6eef7c0 100644
--- a/src/app/qgsoptions.cpp
+++ b/src/app/qgsoptions.cpp
@@ -684,7 +684,7 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WFlags fl ) :
//
// Composer settings
//
-
+
//default composer font
mComposerFontComboBox->blockSignals( true );
@@ -730,7 +730,7 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WFlags fl ) :
//default grid is dots
mGridStyleComboBox->setCurrentIndex( 1 );
}
-
+
//
// Locale settings
//
@@ -846,6 +846,21 @@ QgsOptions::~QgsOptions()
{
}
+void QgsOptions::setCurrentPage( QString pageWidgetName )
+{
+ //find the page with a matching widget name
+ for ( int idx = 0; idx < mOptionsStackedWidget->count(); ++idx )
+ {
+ QWidget * currentPage = mOptionsStackedWidget->widget( idx );
+ if ( currentPage->objectName() == pageWidgetName )
+ {
+ //found the page, set it as current
+ mOptionsStackedWidget->setCurrentIndex( idx );
+ return;
+ }
+ }
+}
+
void QgsOptions::on_cbxProjectDefaultNew_toggled( bool checked )
{
if ( checked )
@@ -1264,7 +1279,7 @@ void QgsOptions::saveOptions()
//
// Composer settings
//
-
+
//default font
QString composerFont = mComposerFontComboBox->currentFont().family();
settings.setValue( "/Composer/defaultFont", composerFont );
@@ -1288,7 +1303,7 @@ void QgsOptions::saveOptions()
{
settings.setValue( "/Composer/gridStyle", "Crosses" );
}
-
+
//
// Locale settings
//
@@ -1676,7 +1691,7 @@ void QgsOptions::on_mOptionsStackedWidget_currentChanged( int theIndx )
{
Q_UNUSED( theIndx );
// load gdal driver list when gdal tab is first opened
- if ( mOptionsStackedWidget->currentWidget()->objectName() == QString( "mOptionsPage_02" )
+ if ( mOptionsStackedWidget->currentWidget()->objectName() == QString( "mOptionsPageGDAL" )
&& ! mLoadedGdalDriverList )
{
loadGdalDriverList();
diff --git a/src/app/qgsoptions.h b/src/app/qgsoptions.h
index 079ce846c8d..95a16924dbf 100644
--- a/src/app/qgsoptions.h
+++ b/src/app/qgsoptions.h
@@ -52,6 +52,11 @@ class APP_EXPORT QgsOptions : public QgsOptionsDialogBase, private Ui::QgsOption
*/
QString theme();
+ /** Sets the page with the specified widget name as the current page
+ * @note added in QGIS 2.1
+ */
+ void setCurrentPage( QString pageWidgetName );
+
public slots:
void on_cbxProjectDefaultNew_toggled( bool checked );
void on_pbnProjectDefaultSetCurrent_clicked();
diff --git a/src/ui/qgscomposerbase.ui b/src/ui/qgscomposerbase.ui
index 4b7acf3bb11..c5436a63eb5 100644
--- a/src/ui/qgscomposerbase.ui
+++ b/src/ui/qgscomposerbase.ui
@@ -780,7 +780,19 @@
Pan Composer
-
+
+
+
+
+ :/images/themes/default/mActionOptions.svg:/images/themes/default/mActionOptions.svg
+
+
+ Composer Options...
+
+
+ QAction::PreferencesRole
+
+
diff --git a/src/ui/qgsoptionsbase.ui b/src/ui/qgsoptionsbase.ui
index d1e8aebf991..8ec3992ebec 100644
--- a/src/ui/qgsoptionsbase.ui
+++ b/src/ui/qgsoptionsbase.ui
@@ -250,7 +250,7 @@
0
-
+
0
@@ -896,7 +896,7 @@
-
+
0
@@ -1232,7 +1232,7 @@
-
+
0
@@ -1561,7 +1561,7 @@
-
+
0
@@ -2076,7 +2076,7 @@
-
+
0
@@ -2422,7 +2422,7 @@
-
+
0
@@ -2836,7 +2836,7 @@
-
+
0
@@ -2945,7 +2945,7 @@
-
+
0
@@ -3446,7 +3446,7 @@
-
+
0
@@ -3586,7 +3586,7 @@
-
+
0
@@ -3843,7 +3843,7 @@
-
+
0
@@ -3943,7 +3943,7 @@
-
+
0