@@ -1323,6 +1323,13 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh
1323
1323
}
1324
1324
#endif
1325
1325
1326
+ auto toggleRevert = [ = ]
1327
+ {
1328
+ mActionRevertProject ->setEnabled ( QgsProject::instance ()->isDirty () &&!QgsProject::instance ()->fileName ().isEmpty () );
1329
+ };
1330
+ connect ( QgsProject::instance (), &QgsProject::isDirtyChanged, mActionRevertProject , toggleRevert );
1331
+ connect ( QgsProject::instance (), &QgsProject::fileNameChanged, mActionRevertProject , toggleRevert );
1332
+
1326
1333
} // QgisApp ctor
1327
1334
1328
1335
QgisApp::QgisApp ()
@@ -1880,6 +1887,7 @@ void QgisApp::createActions()
1880
1887
connect ( mActionNewProject , &QAction::triggered, this , [ = ] { fileNew (); } );
1881
1888
connect ( mActionNewBlankProject , &QAction::triggered, this , &QgisApp::fileNewBlank );
1882
1889
connect ( mActionOpenProject , &QAction::triggered, this , &QgisApp::fileOpen );
1890
+ connect ( mActionRevertProject , &QAction::triggered, this , &QgisApp::fileRevert );
1883
1891
connect ( mActionSaveProject , &QAction::triggered, this , &QgisApp::fileSave );
1884
1892
connect ( mActionCloseProject , &QAction::triggered, this , &QgisApp::fileClose );
1885
1893
connect ( mActionSaveProjectAs , &QAction::triggered, this , &QgisApp::fileSaveAs );
@@ -5478,6 +5486,17 @@ void QgisApp::fileOpen()
5478
5486
}
5479
5487
}
5480
5488
5489
+ void QgisApp::fileRevert ()
5490
+ {
5491
+ if ( QMessageBox::question ( this , tr ( " Revert Project" ),
5492
+ tr ( " Are you sure you want to discard all unsaved changes the current project?" ),
5493
+ QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) == QMessageBox::No )
5494
+ return ;
5495
+
5496
+ // re-open the current project
5497
+ addProject ( QgsProject::instance ()->fileInfo ().filePath () );
5498
+ }
5499
+
5481
5500
void QgisApp::enableProjectMacros ()
5482
5501
{
5483
5502
mTrustedMacros = true ;
0 commit comments