Skip to content

Commit a30dd8a

Browse files
committedDec 6, 2017
Port composer manager dialog to layouts
Not exposed via GUI yet, but can be shown by entering iface.showLayoutManager() in the Python console
1 parent 66b4b45 commit a30dd8a

13 files changed

+970
-24
lines changed
 

‎python/gui/qgisinterface.sip

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -927,6 +927,12 @@ Adds a widget to the user input tool bar.
927927
The composition remains unaffected.
928928
.. versionadded:: 3.0
929929
.. seealso:: :py:func:`openComposer()`
930+
%End
931+
932+
virtual void showLayoutManager() = 0;
933+
%Docstring
934+
Opens the layout manager dialog.
935+
.. versionadded:: 3.0
930936
%End
931937

932938
virtual QgsLayoutDesignerInterface *openLayoutDesigner( QgsLayout *layout ) = 0;

‎src/app/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ SET(QGIS_APP_SRCS
188188
layout/qgslayoutlabelwidget.cpp
189189
layout/qgslayoutlegendlayersdialog.cpp
190190
layout/qgslayoutlegendwidget.cpp
191+
layout/qgslayoutmanagerdialog.cpp
191192
layout/qgslayoutmapwidget.cpp
192193
layout/qgslayoutmapgridwidget.cpp
193194
layout/qgslayoutpagepropertieswidget.cpp
@@ -402,6 +403,7 @@ SET (QGIS_APP_MOC_HDRS
402403
layout/qgslayoutlabelwidget.h
403404
layout/qgslayoutlegendwidget.h
404405
layout/qgslayoutlegendlayersdialog.h
406+
layout/qgslayoutmanagerdialog.h
405407
layout/qgslayoutmapwidget.h
406408
layout/qgslayoutmapgridwidget.h
407409
layout/qgslayoutpagepropertieswidget.h

‎src/app/composer/qgscomposermanager.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ QgsComposerManager::QgsComposerManager( QWidget *parent, Qt::WindowFlags f ): QD
4747
QgsSettings settings;
4848
restoreGeometry( settings.value( QStringLiteral( "Windows/ComposerManager/geometry" ) ).toByteArray() );
4949

50-
mModel = new QgsLayoutManagerModel( QgsProject::instance()->layoutManager(),
51-
this );
50+
mModel = new QgsComposerManagerModel( QgsProject::instance()->layoutManager(),
51+
this );
5252
mComposerListView->setModel( mModel );
5353

5454
connect( mButtonBox, &QDialogButtonBox::rejected, this, &QWidget::close );
@@ -440,27 +440,27 @@ void QgsComposerManager::renameClicked()
440440
}
441441

442442
//
443-
// QgsLayoutManagerModel
443+
// QgsComposerManagerModel
444444
//
445445

446-
QgsLayoutManagerModel::QgsLayoutManagerModel( QgsLayoutManager *manager, QObject *parent )
446+
QgsComposerManagerModel::QgsComposerManagerModel( QgsLayoutManager *manager, QObject *parent )
447447
: QAbstractListModel( parent )
448448
, mLayoutManager( manager )
449449
{
450-
connect( mLayoutManager, &QgsLayoutManager::compositionAboutToBeAdded, this, &QgsLayoutManagerModel::compositionAboutToBeAdded );
451-
connect( mLayoutManager, &QgsLayoutManager::compositionAdded, this, &QgsLayoutManagerModel::compositionAdded );
452-
connect( mLayoutManager, &QgsLayoutManager::compositionAboutToBeRemoved, this, &QgsLayoutManagerModel::compositionAboutToBeRemoved );
453-
connect( mLayoutManager, &QgsLayoutManager::compositionRemoved, this, &QgsLayoutManagerModel::compositionRemoved );
454-
connect( mLayoutManager, &QgsLayoutManager::compositionRenamed, this, &QgsLayoutManagerModel::compositionRenamed );
450+
connect( mLayoutManager, &QgsLayoutManager::compositionAboutToBeAdded, this, &QgsComposerManagerModel::compositionAboutToBeAdded );
451+
connect( mLayoutManager, &QgsLayoutManager::compositionAdded, this, &QgsComposerManagerModel::compositionAdded );
452+
connect( mLayoutManager, &QgsLayoutManager::compositionAboutToBeRemoved, this, &QgsComposerManagerModel::compositionAboutToBeRemoved );
453+
connect( mLayoutManager, &QgsLayoutManager::compositionRemoved, this, &QgsComposerManagerModel::compositionRemoved );
454+
connect( mLayoutManager, &QgsLayoutManager::compositionRenamed, this, &QgsComposerManagerModel::compositionRenamed );
455455
}
456456

457-
int QgsLayoutManagerModel::rowCount( const QModelIndex &parent ) const
457+
int QgsComposerManagerModel::rowCount( const QModelIndex &parent ) const
458458
{
459459
Q_UNUSED( parent );
460460
return mLayoutManager->compositions().count();
461461
}
462462

463-
QVariant QgsLayoutManagerModel::data( const QModelIndex &index, int role ) const
463+
QVariant QgsComposerManagerModel::data( const QModelIndex &index, int role ) const
464464
{
465465
if ( index.row() < 0 || index.row() >= rowCount( QModelIndex() ) )
466466
return QVariant();
@@ -480,7 +480,7 @@ QVariant QgsLayoutManagerModel::data( const QModelIndex &index, int role ) const
480480
}
481481
}
482482

483-
bool QgsLayoutManagerModel::setData( const QModelIndex &index, const QVariant &value, int role )
483+
bool QgsComposerManagerModel::setData( const QModelIndex &index, const QVariant &value, int role )
484484
{
485485
if ( !index.isValid() || role != Qt::EditRole )
486486
{
@@ -520,7 +520,7 @@ bool QgsLayoutManagerModel::setData( const QModelIndex &index, const QVariant &v
520520
return true;
521521
}
522522

523-
Qt::ItemFlags QgsLayoutManagerModel::flags( const QModelIndex &index ) const
523+
Qt::ItemFlags QgsComposerManagerModel::flags( const QModelIndex &index ) const
524524
{
525525
Qt::ItemFlags flags = QAbstractListModel::flags( index );
526526

@@ -534,36 +534,36 @@ Qt::ItemFlags QgsLayoutManagerModel::flags( const QModelIndex &index ) const
534534
}
535535
}
536536

537-
QgsComposition *QgsLayoutManagerModel::compositionFromIndex( const QModelIndex &index ) const
537+
QgsComposition *QgsComposerManagerModel::compositionFromIndex( const QModelIndex &index ) const
538538
{
539539
return qobject_cast< QgsComposition * >( qvariant_cast<QObject *>( data( index, CompositionRole ) ) );
540540
}
541541

542-
void QgsLayoutManagerModel::compositionAboutToBeAdded( const QString & )
542+
void QgsComposerManagerModel::compositionAboutToBeAdded( const QString & )
543543
{
544544
int row = mLayoutManager->compositions().count();
545545
beginInsertRows( QModelIndex(), row, row );
546546
}
547547

548-
void QgsLayoutManagerModel::compositionAboutToBeRemoved( const QString &name )
548+
void QgsComposerManagerModel::compositionAboutToBeRemoved( const QString &name )
549549
{
550550
QgsComposition *c = mLayoutManager->compositionByName( name );
551551
int row = mLayoutManager->compositions().indexOf( c );
552552
if ( row >= 0 )
553553
beginRemoveRows( QModelIndex(), row, row );
554554
}
555555

556-
void QgsLayoutManagerModel::compositionAdded( const QString & )
556+
void QgsComposerManagerModel::compositionAdded( const QString & )
557557
{
558558
endInsertRows();
559559
}
560560

561-
void QgsLayoutManagerModel::compositionRemoved( const QString & )
561+
void QgsComposerManagerModel::compositionRemoved( const QString & )
562562
{
563563
endRemoveRows();
564564
}
565565

566-
void QgsLayoutManagerModel::compositionRenamed( QgsComposition *composition, const QString & )
566+
void QgsComposerManagerModel::compositionRenamed( QgsComposition *composition, const QString & )
567567
{
568568
int row = mLayoutManager->compositions().indexOf( composition );
569569
QModelIndex index = createIndex( row, 0 );

‎src/app/composer/qgscomposermanager.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class QgsComposer;
2626
class QgsComposition;
2727
class QgsLayoutManager;
2828

29-
class QgsLayoutManagerModel : public QAbstractListModel
29+
class QgsComposerManagerModel : public QAbstractListModel
3030
{
3131
Q_OBJECT
3232

@@ -37,7 +37,7 @@ class QgsLayoutManagerModel : public QAbstractListModel
3737
CompositionRole = Qt::UserRole + 1,
3838
};
3939

40-
explicit QgsLayoutManagerModel( QgsLayoutManager *manager, QObject *parent = nullptr );
40+
explicit QgsComposerManagerModel( QgsLayoutManager *manager, QObject *parent = nullptr );
4141

4242
int rowCount( const QModelIndex &parent ) const override;
4343
QVariant data( const QModelIndex &index, int role ) const override;
@@ -93,7 +93,7 @@ class QgsComposerManager: public QDialog, private Ui::QgsComposerManagerBase
9393
QPushButton *mRemoveButton = nullptr;
9494
QPushButton *mRenameButton = nullptr;
9595
QPushButton *mDuplicateButton = nullptr;
96-
QgsLayoutManagerModel *mModel = nullptr;
96+
QgsComposerManagerModel *mModel = nullptr;
9797

9898
#ifdef Q_OS_MAC
9999
void showEvent( QShowEvent *event );

‎src/app/layout/qgslayoutdesignerdialog.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,8 @@ QgsLayout *QgsLayoutDesignerDialog::currentLayout()
615615
void QgsLayoutDesignerDialog::setCurrentLayout( QgsLayout *layout )
616616
{
617617
mLayout = layout;
618+
connect( mLayout, &QgsLayout::destroyed, this, &QgsLayoutDesignerDialog::close );
619+
618620
mView->setCurrentLayout( layout );
619621

620622
// add undo/redo actions which apply to the correct layout undo stack
@@ -1372,7 +1374,10 @@ void QgsLayoutDesignerDialog::showManager()
13721374
// NOTE: Avoid crash where composer that spawned modal manager from toolbar ends up
13731375
// being deleted by user, but event loop tries to return to layout on manager close
13741376
// (does not seem to be an issue for menu action)
1375-
QTimer::singleShot( 0, QgisApp::instance()->actionShowComposerManager(), SLOT( trigger() ) );
1377+
QTimer::singleShot( 0, this, [ = ]
1378+
{
1379+
QgisApp::instance()->showLayoutManager();
1380+
} );
13761381
}
13771382

13781383
void QgsLayoutDesignerDialog::paste()

0 commit comments

Comments
 (0)
Please sign in to comment.