From 3edab4feef50dac83b89988c003e4a770af8bd54 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Mon, 8 Jan 2018 08:57:57 +1000 Subject: [PATCH] Swap composers menu to show layouts instead --- src/app/composer/qgscomposer.cpp | 2 +- src/app/layout/qgslayoutdesignerdialog.cpp | 8 ++++++++ src/app/layout/qgslayoutdesignerdialog.h | 3 +++ src/app/qgisapp.cpp | 17 +++++++++-------- src/app/qgisapp.h | 12 +++++------- src/ui/layout/qgslayoutdesignerbase.ui | 11 +++++++++++ src/ui/qgisapp.ui | 6 +++--- 7 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/app/composer/qgscomposer.cpp b/src/app/composer/qgscomposer.cpp index c7ae5bfc6ac..f27e0b715a2 100644 --- a/src/app/composer/qgscomposer.cpp +++ b/src/app/composer/qgscomposer.cpp @@ -3570,7 +3570,7 @@ void QgsComposer::mActionPageSetup_triggered() void QgsComposer::populatePrintComposersMenu() { - mQgis->populateComposerMenu( mPrintComposersMenu ); + mQgis->populateLayoutsMenu( mPrintComposersMenu ); } void QgsComposer::populateWindowMenu() diff --git a/src/app/layout/qgslayoutdesignerdialog.cpp b/src/app/layout/qgslayoutdesignerdialog.cpp index 59284efd3e6..93fe2d20221 100644 --- a/src/app/layout/qgslayoutdesignerdialog.cpp +++ b/src/app/layout/qgslayoutdesignerdialog.cpp @@ -709,6 +709,9 @@ QgsLayoutDesignerDialog::QgsLayoutDesignerDialog( QWidget *parent, Qt::WindowFla mActionExportAtlasAsSVG->setEnabled( false ); mActionExportAtlasAsPDF->setEnabled( false ); + mLayoutsMenu->setObjectName( QStringLiteral( "mLayoutsMenu" ) ); + connect( mLayoutsMenu, &QMenu::aboutToShow, this, &QgsLayoutDesignerDialog::populateLayoutsMenu ); + restoreWindowState(); //listen out to status bar updates from the view @@ -3312,6 +3315,11 @@ void QgsLayoutDesignerDialog::pageOrientationChanged() mSetPageOrientation = false; } +void QgsLayoutDesignerDialog::populateLayoutsMenu() +{ + QgisApp::instance()->populateLayoutsMenu( mLayoutsMenu ); +} + void QgsLayoutDesignerDialog::paste() { QPointF pt = mView->mapFromGlobal( QCursor::pos() ); diff --git a/src/app/layout/qgslayoutdesignerdialog.h b/src/app/layout/qgslayoutdesignerdialog.h index 0e0f6982ae6..eff4e10836f 100644 --- a/src/app/layout/qgslayoutdesignerdialog.h +++ b/src/app/layout/qgslayoutdesignerdialog.h @@ -340,6 +340,9 @@ class QgsLayoutDesignerDialog: public QMainWindow, private Ui::QgsLayoutDesigner //! Sets the printer page orientation when the page orientation changes void pageOrientationChanged(); + //! Populate layouts menu from main app's + void populateLayoutsMenu(); + private: static bool sInitializedRegistry; diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 9c918acb6ec..52e05b23899 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -3244,7 +3244,7 @@ void QgisApp::setupConnections() // setup undo/redo actions connect( mUndoWidget, &QgsUndoWidget::undoStackChanged, this, &QgisApp::updateUndoActions ); - connect( mPrintComposersMenu, &QMenu::aboutToShow, this, &QgisApp::composerMenuAboutToShow ); + connect( mLayoutsMenu, &QMenu::aboutToShow, this, &QgisApp::layoutsMenuAboutToShow ); connect( QgsProject::instance()->layoutManager(), &QgsLayoutManager::compositionAboutToBeRemoved, this, &QgisApp::compositionAboutToBeRemoved ); } @@ -7535,21 +7535,22 @@ void QgisApp::setLayoutAtlasFeature( QgsPrintLayout *layout, QgsMapLayer *layer, designer->setAtlasFeature( layer, feat ); } -void QgisApp::composerMenuAboutToShow() +void QgisApp::layoutsMenuAboutToShow() { - populateComposerMenu( mPrintComposersMenu ); + populateLayoutsMenu( mLayoutsMenu ); } -void QgisApp::populateComposerMenu( QMenu *menu ) +void QgisApp::populateLayoutsMenu( QMenu *menu ) { menu->clear(); QList acts; - Q_FOREACH ( QgsComposition *c, QgsProject::instance()->layoutManager()->compositions() ) + const QList< QgsMasterLayoutInterface * > layouts = QgsProject::instance()->layoutManager()->layouts(); + for ( QgsMasterLayoutInterface *layout : layouts ) { - QAction *a = new QAction( c->name(), menu ); - connect( a, &QAction::triggered, this, [this, c] + QAction *a = new QAction( layout->name(), menu ); + connect( a, &QAction::triggered, this, [this, layout] { - openComposer( c ); + openLayoutDesignerDialog( layout ); } ); acts << a; } diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h index 99dbf1dcd46..c0f2054ebf9 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -46,10 +46,8 @@ class QgsAuthManager; class QgsBookmarks; class QgsClipboard; class QgsComposer; -class QgsComposerInterface; class QgsComposition; class QgsComposerManager; -class QgsComposerView; class QgsContrastEnhancement; class QgsCoordinateReferenceSystem; class QgsCustomDropHandler; @@ -302,7 +300,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow QgisAppStyleSheet *styleSheetBuilder(); //! Populates a menu with actions for opening layout designers - void populateComposerMenu( QMenu *menu ); + void populateLayoutsMenu( QMenu *menu ); //! Setup the toolbar popup menus for a given theme void setupToolbarPopups( QString themeName ); @@ -574,7 +572,6 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow QMenu *firstRightStandardMenu() { return mHelpMenu; } QMenu *windowMenu() { return nullptr; } #endif - QMenu *printComposersMenu() {return mPrintComposersMenu;} QMenu *helpMenu() { return mHelpMenu; } //! Toolbars @@ -1260,6 +1257,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow //! Create a new print layout void newPrintLayout(); + //! Slot to handle display of layouts menu, e.g. sorting + void layoutsMenuAboutToShow(); + void showComposerManager(); //! Add all loaded layers into the overview - overrides qgisappbase method void addAllToOverview(); @@ -1528,8 +1528,6 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow void showStyleManager(); - //! Slot to handle display of composers menu, e.g. sorting - void composerMenuAboutToShow(); void compositionAboutToBeRemoved( const QString &name ); //! Toggles whether to show pinned labels @@ -2037,7 +2035,7 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow //! Print composers of this project, accessible by id string QSet mPrintComposers; - //! Print composers of this project, accessible by id string + //! Currently open layout designer dialogs QSet mLayoutDesignerDialogs; //! QGIS-internal vector feature clipboard diff --git a/src/ui/layout/qgslayoutdesignerbase.ui b/src/ui/layout/qgslayoutdesignerbase.ui index fff12d65b64..4c2f7bb0d6a 100644 --- a/src/ui/layout/qgslayoutdesignerbase.ui +++ b/src/ui/layout/qgslayoutdesignerbase.ui @@ -106,12 +106,18 @@ &Layout + + + Layouts + + + @@ -1487,6 +1493,11 @@ Ctrl+Shift+P + + + dsfg + + diff --git a/src/ui/qgisapp.ui b/src/ui/qgisapp.ui index 85126dab703..e0ae4c5457c 100644 --- a/src/ui/qgisapp.ui +++ b/src/ui/qgisapp.ui @@ -32,9 +32,9 @@ Open &Recent - + - Print Composers + Layouts @@ -59,7 +59,7 @@ - +