@@ -667,6 +667,8 @@ QgsLayoutDesignerDialog::QgsLayoutDesignerDialog( QWidget *parent, Qt::WindowFla
667
667
tabifyDockWidget ( mGeneralDock , mItemDock );
668
668
tabifyDockWidget ( mItemDock , mItemsDock );
669
669
670
+ toggleActions ( false );
671
+
670
672
// set initial state of atlas controls
671
673
mActionAtlasPreview ->setEnabled ( false );
672
674
mActionAtlasPreview ->setChecked ( false );
@@ -717,6 +719,11 @@ void QgsLayoutDesignerDialog::setMasterLayout( QgsMasterLayoutInterface *layout
717
719
{
718
720
connect ( r, &QgsReport::nameChanged, this , &QgsLayoutDesignerDialog::setWindowTitle );
719
721
}
722
+
723
+ if ( dynamic_cast < QgsPrintLayout * >( layout ) )
724
+ {
725
+ createAtlasWidget ();
726
+ }
720
727
}
721
728
722
729
QgsMasterLayoutInterface *QgsLayoutDesignerDialog::masterLayout ()
@@ -726,52 +733,55 @@ QgsMasterLayoutInterface *QgsLayoutDesignerDialog::masterLayout()
726
733
727
734
void QgsLayoutDesignerDialog::setCurrentLayout ( QgsLayout *layout )
728
735
{
729
- layout->deselectAll ();
730
- mLayout = layout;
731
-
732
- mView ->setCurrentLayout ( layout );
733
-
734
- // add undo/redo actions which apply to the correct layout undo stack
735
- delete mUndoAction ;
736
- delete mRedoAction ;
737
- mUndoAction = layout->undoStack ()->stack ()->createUndoAction ( this );
738
- mUndoAction ->setIcon ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mActionUndo.svg" ) ) );
739
- mUndoAction ->setShortcuts ( QKeySequence::Undo );
740
- mRedoAction = layout->undoStack ()->stack ()->createRedoAction ( this );
741
- mRedoAction ->setIcon ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mActionRedo.svg" ) ) );
742
- mRedoAction ->setShortcuts ( QKeySequence::Redo );
743
- menuEdit->insertAction ( menuEdit->actions ().at ( 0 ), mRedoAction );
744
- menuEdit->insertAction ( mRedoAction , mUndoAction );
745
- mLayoutToolbar ->addAction ( mUndoAction );
746
- mLayoutToolbar ->addAction ( mRedoAction );
747
-
748
- connect ( mLayout ->undoStack (), &QgsLayoutUndoStack::undoRedoOccurredForItems, this , &QgsLayoutDesignerDialog::undoRedoOccurredForItems );
749
- connect ( mActionClearGuides , &QAction::triggered, &mLayout ->guides (), [ = ]
750
- {
751
- mLayout ->guides ().clear ();
752
- } );
736
+ if ( !layout )
737
+ {
738
+ toggleActions ( false );
739
+ }
740
+ else
741
+ {
742
+ layout->deselectAll ();
743
+ mLayout = layout;
744
+
745
+ mView ->setCurrentLayout ( layout );
746
+
747
+ // add undo/redo actions which apply to the correct layout undo stack
748
+ delete mUndoAction ;
749
+ delete mRedoAction ;
750
+ mUndoAction = layout->undoStack ()->stack ()->createUndoAction ( this );
751
+ mUndoAction ->setIcon ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mActionUndo.svg" ) ) );
752
+ mUndoAction ->setShortcuts ( QKeySequence::Undo );
753
+ mRedoAction = layout->undoStack ()->stack ()->createRedoAction ( this );
754
+ mRedoAction ->setIcon ( QgsApplication::getThemeIcon ( QStringLiteral ( " /mActionRedo.svg" ) ) );
755
+ mRedoAction ->setShortcuts ( QKeySequence::Redo );
756
+ menuEdit->insertAction ( menuEdit->actions ().at ( 0 ), mRedoAction );
757
+ menuEdit->insertAction ( mRedoAction , mUndoAction );
758
+ mLayoutToolbar ->addAction ( mUndoAction );
759
+ mLayoutToolbar ->addAction ( mRedoAction );
760
+
761
+ connect ( mLayout ->undoStack (), &QgsLayoutUndoStack::undoRedoOccurredForItems, this , &QgsLayoutDesignerDialog::undoRedoOccurredForItems );
762
+ connect ( mActionClearGuides , &QAction::triggered, &mLayout ->guides (), [ = ]
763
+ {
764
+ mLayout ->guides ().clear ();
765
+ } );
753
766
754
- mActionShowGrid ->setChecked ( mLayout ->renderContext ().gridVisible () );
755
- mActionSnapGrid ->setChecked ( mLayout ->snapper ().snapToGrid () );
756
- mActionShowGuides ->setChecked ( mLayout ->guides ().visible () );
757
- mActionSnapGuides ->setChecked ( mLayout ->snapper ().snapToGuides () );
758
- mActionSmartGuides ->setChecked ( mLayout ->snapper ().snapToItems () );
759
- mActionShowBoxes ->setChecked ( mLayout ->renderContext ().boundingBoxesVisible () );
760
- mActionShowPage ->setChecked ( mLayout ->renderContext ().pagesVisible () );
767
+ mActionShowGrid ->setChecked ( mLayout ->renderContext ().gridVisible () );
768
+ mActionSnapGrid ->setChecked ( mLayout ->snapper ().snapToGrid () );
769
+ mActionShowGuides ->setChecked ( mLayout ->guides ().visible () );
770
+ mActionSnapGuides ->setChecked ( mLayout ->snapper ().snapToGuides () );
771
+ mActionSmartGuides ->setChecked ( mLayout ->snapper ().snapToItems () );
772
+ mActionShowBoxes ->setChecked ( mLayout ->renderContext ().boundingBoxesVisible () );
773
+ mActionShowPage ->setChecked ( mLayout ->renderContext ().pagesVisible () );
761
774
762
- mUndoView ->setStack ( mLayout ->undoStack ()->stack () );
775
+ mUndoView ->setStack ( mLayout ->undoStack ()->stack () );
763
776
764
- mSelectTool ->setLayout ( layout );
765
- mItemsTreeView ->setCurrentLayout ( mLayout );
777
+ mSelectTool ->setLayout ( layout );
778
+ mItemsTreeView ->setCurrentLayout ( mLayout );
766
779
#ifdef ENABLE_MODELTEST
767
- new ModelTest ( mLayout ->itemsModel (), this );
780
+ new ModelTest ( mLayout ->itemsModel (), this );
768
781
#endif
769
782
770
- createLayoutPropertiesWidget ();
771
-
772
- if ( qobject_cast< QgsPrintLayout * >( layout ) )
773
- {
774
- createAtlasWidget ();
783
+ createLayoutPropertiesWidget ();
784
+ toggleActions ( true );
775
785
}
776
786
}
777
787
@@ -1243,6 +1253,9 @@ void QgsLayoutDesignerDialog::sliderZoomChanged( int value )
1243
1253
1244
1254
void QgsLayoutDesignerDialog::updateStatusZoom ()
1245
1255
{
1256
+ if ( !currentLayout () )
1257
+ return ;
1258
+
1246
1259
double zoomLevel = 0 ;
1247
1260
if ( currentLayout ()->units () == QgsUnitTypes::LayoutPixels )
1248
1261
{
@@ -3053,6 +3066,89 @@ QgsLayoutAtlas *QgsLayoutDesignerDialog::atlas()
3053
3066
return layout->atlas ();
3054
3067
}
3055
3068
3069
+ void QgsLayoutDesignerDialog::toggleActions ( bool layoutAvailable )
3070
+ {
3071
+ mActionPan ->setEnabled ( layoutAvailable );
3072
+ mActionZoomTool ->setEnabled ( layoutAvailable );
3073
+ mActionSelectMoveItem ->setEnabled ( layoutAvailable );
3074
+ mActionZoomAll ->setEnabled ( layoutAvailable );
3075
+ mActionZoomIn ->setEnabled ( layoutAvailable );
3076
+ mActionZoomOut ->setEnabled ( layoutAvailable );
3077
+ mActionZoomActual ->setEnabled ( layoutAvailable );
3078
+ mActionZoomToWidth ->setEnabled ( layoutAvailable );
3079
+ mActionAddPages ->setEnabled ( layoutAvailable );
3080
+ mActionShowGrid ->setEnabled ( layoutAvailable );
3081
+ mActionSnapGrid ->setEnabled ( layoutAvailable );
3082
+ mActionShowGuides ->setEnabled ( layoutAvailable );
3083
+ mActionSnapGuides ->setEnabled ( layoutAvailable );
3084
+ mActionClearGuides ->setEnabled ( layoutAvailable );
3085
+ mActionLayoutProperties ->setEnabled ( layoutAvailable );
3086
+ mActionShowBoxes ->setEnabled ( layoutAvailable );
3087
+ mActionSmartGuides ->setEnabled ( layoutAvailable );
3088
+ mActionDeselectAll ->setEnabled ( layoutAvailable );
3089
+ mActionSelectAll ->setEnabled ( layoutAvailable );
3090
+ mActionInvertSelection ->setEnabled ( layoutAvailable );
3091
+ mActionSelectNextBelow ->setEnabled ( layoutAvailable );
3092
+ mActionSelectNextAbove ->setEnabled ( layoutAvailable );
3093
+ mActionLockItems ->setEnabled ( layoutAvailable );
3094
+ mActionUnlockAll ->setEnabled ( layoutAvailable );
3095
+ mActionRaiseItems ->setEnabled ( layoutAvailable );
3096
+ mActionLowerItems ->setEnabled ( layoutAvailable );
3097
+ mActionMoveItemsToTop ->setEnabled ( layoutAvailable );
3098
+ mActionMoveItemsToBottom ->setEnabled ( layoutAvailable );
3099
+ mActionAlignLeft ->setEnabled ( layoutAvailable );
3100
+ mActionAlignHCenter ->setEnabled ( layoutAvailable );
3101
+ mActionAlignRight ->setEnabled ( layoutAvailable );
3102
+ mActionAlignTop ->setEnabled ( layoutAvailable );
3103
+ mActionAlignVCenter ->setEnabled ( layoutAvailable );
3104
+ mActionAlignBottom ->setEnabled ( layoutAvailable );
3105
+ mActionDistributeLeft ->setEnabled ( layoutAvailable );
3106
+ mActionDistributeHCenter ->setEnabled ( layoutAvailable );
3107
+ mActionDistributeRight ->setEnabled ( layoutAvailable );
3108
+ mActionDistributeTop ->setEnabled ( layoutAvailable );
3109
+ mActionDistributeVCenter ->setEnabled ( layoutAvailable );
3110
+ mActionDistributeBottom ->setEnabled ( layoutAvailable );
3111
+ mActionResizeNarrowest ->setEnabled ( layoutAvailable );
3112
+ mActionResizeWidest ->setEnabled ( layoutAvailable );
3113
+ mActionResizeShortest ->setEnabled ( layoutAvailable );
3114
+ mActionResizeTallest ->setEnabled ( layoutAvailable );
3115
+ mActionDeleteSelection ->setEnabled ( layoutAvailable );
3116
+ mActionResizeToSquare ->setEnabled ( layoutAvailable );
3117
+ mActionShowPage ->setEnabled ( layoutAvailable );
3118
+ mActionGroupItems ->setEnabled ( layoutAvailable );
3119
+ mActionUngroupItems ->setEnabled ( layoutAvailable );
3120
+ mActionRefreshView ->setEnabled ( layoutAvailable );
3121
+ mActionEditNodesItem ->setEnabled ( layoutAvailable );
3122
+ mActionMoveItemContent ->setEnabled ( layoutAvailable );
3123
+ mActionPasteInPlace ->setEnabled ( layoutAvailable );
3124
+ mActionSaveAsTemplate ->setEnabled ( layoutAvailable );
3125
+ mActionLoadFromTemplate ->setEnabled ( layoutAvailable );
3126
+ mActionDuplicateLayout ->setEnabled ( layoutAvailable );
3127
+ mActionExportAsImage ->setEnabled ( layoutAvailable );
3128
+ mActionExportAsPDF ->setEnabled ( layoutAvailable );
3129
+ mActionExportAsSVG ->setEnabled ( layoutAvailable );
3130
+ mActionCut ->setEnabled ( layoutAvailable );
3131
+ mActionCopy ->setEnabled ( layoutAvailable );
3132
+ mActionPaste ->setEnabled ( layoutAvailable );
3133
+ menuAlign_Items->setEnabled ( layoutAvailable );
3134
+ menu_Distribute_Items->setEnabled ( layoutAvailable );
3135
+ menuResize->setEnabled ( layoutAvailable );
3136
+
3137
+ const QList<QAction *> itemActions = mToolsActionGroup ->actions ();
3138
+ for ( QAction *action : itemActions )
3139
+ {
3140
+ action->setEnabled ( layoutAvailable );
3141
+ }
3142
+ for ( auto it = mItemGroupSubmenus .constBegin (); it != mItemGroupSubmenus .constEnd (); ++it )
3143
+ {
3144
+ it.value ()->setEnabled ( layoutAvailable );
3145
+ }
3146
+ for ( auto it = mItemGroupToolButtons .constBegin (); it != mItemGroupToolButtons .constEnd (); ++it )
3147
+ {
3148
+ it.value ()->setEnabled ( layoutAvailable );
3149
+ }
3150
+ }
3151
+
3056
3152
void QgsLayoutDesignerDialog::selectItems ( const QList<QgsLayoutItem *> items )
3057
3153
{
3058
3154
for ( QGraphicsItem *item : items )
0 commit comments