@@ -87,6 +87,7 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr
87
87
{
88
88
setObjectName ( QStringLiteral ( " QgsAttributeTableDialog/" ) + layer->id () );
89
89
setupUi ( this );
90
+ connect ( mActionCutSelectedRows , &QAction::triggered, this , &QgsAttributeTableDialog::mActionCutSelectedRows_triggered );
90
91
connect ( mActionCopySelectedRows , &QAction::triggered, this , &QgsAttributeTableDialog::mActionCopySelectedRows_triggered );
91
92
connect ( mActionPasteFeatures , &QAction::triggered, this , &QgsAttributeTableDialog::mActionPasteFeatures_triggered );
92
93
connect ( mActionToggleEditing , &QAction::toggled, this , &QgsAttributeTableDialog::mActionToggleEditing_toggled );
@@ -264,15 +265,18 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr
264
265
mActionReload ->setEnabled ( ! mLayer ->isEditable () );
265
266
mActionAddAttribute ->setEnabled ( ( canChangeAttributes || canAddAttributes ) && mLayer ->isEditable () );
266
267
mActionRemoveAttribute ->setEnabled ( canDeleteAttributes && mLayer ->isEditable () );
267
- mActionDeleteSelected ->setEnabled ( canDeleteFeatures && mLayer ->isEditable () );
268
268
if ( !canDeleteFeatures )
269
+ {
269
270
mToolbar ->removeAction ( mActionDeleteSelected );
271
+ mToolbar ->removeAction ( mActionCutSelectedRows );
272
+ }
270
273
mActionAddFeature ->setEnabled ( canAddFeatures && mLayer ->isEditable () );
274
+ mActionPasteFeatures ->setEnabled ( canAddFeatures && mLayer ->isEditable () );
271
275
if ( !canAddFeatures )
276
+ {
272
277
mToolbar ->removeAction ( mActionAddFeature );
273
-
274
- if ( canDeleteFeatures || canAddFeatures )
275
- mToolbar ->insertSeparator ( mActionExpressionSelect );
278
+ mToolbar ->removeAction ( mActionPasteFeatures );
279
+ }
276
280
277
281
mMainViewButtonGroup ->setId ( mTableViewButton , QgsDualView::AttributeTable );
278
282
mMainViewButtonGroup ->setId ( mAttributeViewButton , QgsDualView::AttributeEditor );
@@ -382,8 +386,12 @@ void QgsAttributeTableDialog::updateTitle()
382
386
else
383
387
mRunFieldCalc ->setText ( tr ( " Update Filtered" ) );
384
388
389
+ bool canDeleteFeatures = mLayer ->dataProvider ()->capabilities () & QgsVectorDataProvider::DeleteFeatures;
385
390
bool enabled = mLayer ->selectedFeatureCount () > 0 ;
386
391
mRunFieldCalcSelected ->setEnabled ( enabled );
392
+ mActionDeleteSelected ->setEnabled ( canDeleteFeatures && mLayer ->isEditable () && enabled );
393
+ mActionCutSelectedRows ->setEnabled ( canDeleteFeatures && mLayer ->isEditable () && enabled );
394
+ mActionCopySelectedRows ->setEnabled ( enabled );
387
395
}
388
396
389
397
void QgsAttributeTableDialog::updateButtonStatus ( const QString &fieldName, bool isValid )
@@ -739,6 +747,11 @@ void QgsAttributeTableDialog::mActionExpressionSelect_triggered()
739
747
dlg->show ();
740
748
}
741
749
750
+ void QgsAttributeTableDialog::mActionCutSelectedRows_triggered ()
751
+ {
752
+ QgisApp::instance ()->cutSelectionToClipboard ( mLayer );
753
+ }
754
+
742
755
void QgsAttributeTableDialog::mActionCopySelectedRows_triggered ()
743
756
{
744
757
QgisApp::instance ()->copySelectionToClipboard ( mLayer );
@@ -823,8 +836,10 @@ void QgsAttributeTableDialog::editingToggled()
823
836
bool canAddFeatures = mLayer ->dataProvider ()->capabilities () & QgsVectorDataProvider::AddFeatures;
824
837
mActionAddAttribute ->setEnabled ( ( canChangeAttributes || canAddAttributes ) && mLayer ->isEditable () );
825
838
mActionRemoveAttribute ->setEnabled ( canDeleteAttributes && mLayer ->isEditable () );
826
- mActionDeleteSelected ->setEnabled ( canDeleteFeatures && mLayer ->isEditable () );
839
+ mActionDeleteSelected ->setEnabled ( canDeleteFeatures && mLayer ->isEditable () && mLayer ->selectedFeatureCount () > 0 );
840
+ mActionCutSelectedRows ->setEnabled ( canDeleteFeatures && mLayer ->isEditable () && mLayer ->selectedFeatureCount () > 0 );
827
841
mActionAddFeature ->setEnabled ( canAddFeatures && mLayer ->isEditable () );
842
+ mActionPasteFeatures ->setEnabled ( canAddFeatures && mLayer ->isEditable () );
828
843
mActionToggleEditing ->setEnabled ( ( canChangeAttributes || canDeleteFeatures || canAddAttributes || canDeleteAttributes || canAddFeatures ) && !mLayer ->readOnly () );
829
844
830
845
mUpdateExpressionBox ->setVisible ( mLayer ->isEditable () );
0 commit comments