@@ -4241,6 +4241,40 @@ void QgisApp::labelingFontNotFound( QgsVectorLayer* vlayer, const QString& fontf
4241
4241
messageBar ()->pushWidget ( fontMsg, QgsMessageBar::WARNING );
4242
4242
}
4243
4243
4244
+ void QgisApp::commitError ( QgsVectorLayer* vlayer )
4245
+ {
4246
+ QWidget *errorMsg = QgsMessageBar::createMessage (
4247
+ tr ( " Commit errors" ),
4248
+ tr ( " Could not commit changes to layer %1" ).arg ( vlayer->name () ),
4249
+ QgsApplication::getThemeIcon ( " /mIconWarn.png" ),
4250
+ messageBar () );
4251
+
4252
+ QgsMessageViewer *mv = new QgsMessageViewer ( errorMsg );
4253
+ mv->setWindowTitle ( tr ( " Commit errors" ) );
4254
+ mv->setMessageAsPlainText ( tr ( " Could not commit changes to layer %1" ).arg ( vlayer->name () )
4255
+ + " \n\n "
4256
+ + tr ( " Errors: %1\n " ).arg ( vlayer->commitErrors ().join ( " \n " ) )
4257
+ );
4258
+
4259
+ // store pointer to vlayer in data of QAction
4260
+ QAction *act = new QAction ( errorMsg );
4261
+ act->setData ( QVariant ( QMetaType::QObjectStar, &vlayer ) );
4262
+ act->setText ( tr ( " Show more" ) );
4263
+
4264
+ QToolButton *showMore = new QToolButton ( errorMsg );
4265
+ showMore->setStyleSheet ( " background-color: rgba(255, 255, 255, 0); color: black; text-decoration: underline;" );
4266
+ showMore->setCursor ( Qt::PointingHandCursor );
4267
+ showMore->setSizePolicy ( QSizePolicy::Maximum, QSizePolicy::Preferred );
4268
+ showMore->addAction ( act );
4269
+ showMore->setDefaultAction ( act );
4270
+
4271
+ connect ( showMore, SIGNAL ( triggered ( QAction* ) ), mv, SLOT ( exec () ) );
4272
+ errorMsg->layout ()->addWidget ( showMore );
4273
+
4274
+ // no timeout set, since notice needs attention and is only shown first time layer is labeled
4275
+ messageBar ()->pushWidget ( errorMsg, QgsMessageBar::WARNING );
4276
+ }
4277
+
4244
4278
void QgisApp::labelingDialogFontNotFound ( QAction* act )
4245
4279
{
4246
4280
if ( !act )
@@ -5635,14 +5669,7 @@ bool QgisApp::toggleEditing( QgsMapLayer *layer, bool allowCancel )
5635
5669
case QMessageBox::Save:
5636
5670
if ( !vlayer->commitChanges () )
5637
5671
{
5638
- QgsMessageViewer *mv = new QgsMessageViewer ( this );
5639
- mv->setWindowTitle ( tr ( " Error" ) );
5640
- mv->setMessageAsPlainText ( tr ( " Could not commit changes to layer %1\n\n Errors: %2\n " )
5641
- .arg ( vlayer->name () )
5642
- .arg ( vlayer->commitErrors ().join ( " \n " ) )
5643
- );
5644
- mv->exec ();
5645
-
5672
+ commitError ( vlayer );
5646
5673
// Leave the in-memory editing state alone,
5647
5674
// to give the user a chance to enter different values
5648
5675
// and try the commit again later
@@ -5707,13 +5734,7 @@ void QgisApp::saveEdits( QgsMapLayer *layer, bool leaveEditable, bool triggerRep
5707
5734
if ( !vlayer->commitChanges () )
5708
5735
{
5709
5736
mSaveRollbackInProgress = false ;
5710
- QgsMessageViewer * mv = new QgsMessageViewer ( this );
5711
- mv->setWindowTitle ( tr ( " Error" ) );
5712
- mv->setMessageAsPlainText ( tr ( " Could not commit changes to layer %1\n\n Errors: %2\n " )
5713
- .arg ( vlayer->name () )
5714
- .arg ( vlayer->commitErrors ().join ( " \n " ) )
5715
- );
5716
- mv->exec ();
5737
+ commitError ( vlayer );
5717
5738
}
5718
5739
5719
5740
if ( leaveEditable )
@@ -6243,7 +6264,6 @@ void QgisApp::duplicateLayers( QList<QgsMapLayer *> lyrList )
6243
6264
{
6244
6265
mInfoBar ->pushWidget ( msgBar, QgsMessageBar::WARNING );
6245
6266
}
6246
-
6247
6267
}
6248
6268
6249
6269
void QgisApp::setLayerCRS ()
0 commit comments