From 89146f3cee3f622d72fe358ee67a399c9e197c97 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Sat, 21 Oct 2023 22:33:19 +0200 Subject: [PATCH] raw -> smart pointer for musredit where it makes sence. --- src/musredit_qt6/musredit/PAdmin.h | 2 +- .../musredit/PChangeDefaultPathsDialog.cpp | 3 +- .../musredit/PChangeDefaultPathsDialog.h | 6 +- .../musredit/PDumpOutputHandler.cpp | 24 ++++---- .../musredit/PDumpOutputHandler.h | 9 +-- .../musredit/PFitOutputHandler.cpp | 26 ++++----- src/musredit_qt6/musredit/PFitOutputHandler.h | 9 +-- src/musredit_qt6/musredit/PPrefsDialog.cpp | 6 +- src/musredit_qt6/musredit/PSubTextEdit.cpp | 56 +++++++------------ src/musredit_qt6/musredit/PTextEdit.cpp | 12 ++-- src/musredit_qt6/musredit/PTextEdit.h | 4 +- src/musredit_qt6/musredit/main.cpp | 5 +- 12 files changed, 70 insertions(+), 92 deletions(-) diff --git a/src/musredit_qt6/musredit/PAdmin.h b/src/musredit_qt6/musredit/PAdmin.h index 122ec916..24c47d7a 100644 --- a/src/musredit_qt6/musredit/PAdmin.h +++ b/src/musredit_qt6/musredit/PAdmin.h @@ -36,7 +36,7 @@ #include #include -#include +#include "musredit.h" class PAdmin; diff --git a/src/musredit_qt6/musredit/PChangeDefaultPathsDialog.cpp b/src/musredit_qt6/musredit/PChangeDefaultPathsDialog.cpp index 8a91c3dd..469861bb 100644 --- a/src/musredit_qt6/musredit/PChangeDefaultPathsDialog.cpp +++ b/src/musredit_qt6/musredit/PChangeDefaultPathsDialog.cpp @@ -219,8 +219,7 @@ PDefaultPaths::PDefaultPaths() : QObject() */ PChangeDefaultPathsDialog::PChangeDefaultPathsDialog() { - fDefaultPath = 0; - fDefaultPath = new PDefaultPaths(); + fDefaultPath = std::make_unique(); if (!fDefaultPath->isValid()) return; diff --git a/src/musredit_qt6/musredit/PChangeDefaultPathsDialog.h b/src/musredit_qt6/musredit/PChangeDefaultPathsDialog.h index d3024d0f..f2621596 100644 --- a/src/musredit_qt6/musredit/PChangeDefaultPathsDialog.h +++ b/src/musredit_qt6/musredit/PChangeDefaultPathsDialog.h @@ -30,6 +30,8 @@ #ifndef _PCHANGEDEFAULTPATHSDIALOG_H_ #define _PCHANGEDEFAULTPATHSDIALOG_H_ +#include + #include #include #include @@ -61,7 +63,7 @@ class PDefaultPathsXMLParser QXmlStreamReader fXml; ///< xml stream reader object bool fValid; ///< flag showing if XML read has been successful EAdminKeyWords fKeyWord; ///< key word tag to know how to handle the content - PDefaultPaths *fDefaultPaths; ///< keeps the default search paths for the data files + PDefaultPaths *fDefaultPaths; ///< keeps the default search paths for the data files }; //--------------------------------------------------------------------------- @@ -98,7 +100,7 @@ class PChangeDefaultPathsDialog : public QDialog, private Ui::PChangeDefaultPath void saveDefaultPathList(); private: - PDefaultPaths *fDefaultPath; + std::unique_ptr fDefaultPath; }; #endif // _PCHANGEDEFAULTPATHSDIALOG_H_ diff --git a/src/musredit_qt6/musredit/PDumpOutputHandler.cpp b/src/musredit_qt6/musredit/PDumpOutputHandler.cpp index e3ca9359..2f6932c5 100644 --- a/src/musredit_qt6/musredit/PDumpOutputHandler.cpp +++ b/src/musredit_qt6/musredit/PDumpOutputHandler.cpp @@ -45,20 +45,20 @@ PDumpOutputHandler::PDumpOutputHandler(QVector &cmd) return; // Layout - fVbox = new QVBoxLayout( this ); - fOutput = new QTextEdit(); - fVbox->addWidget(fOutput); + fVbox = std::make_unique( this ); + fOutput = std::make_unique(); + fVbox->addWidget(fOutput.get()); fOutput->setMinimumSize(600, 755); fOutput->setReadOnly(true); - connect( fOutput, SIGNAL( destroyed() ), this, SLOT( quitButtonPressed() ) ); - fQuitButton = new QPushButton( tr("Quit") ); - fVbox->addWidget(fQuitButton); - connect( fQuitButton, SIGNAL( clicked() ), this, SLOT( quitButtonPressed() ) ); + connect( fOutput.get(), SIGNAL( destroyed() ), this, SLOT( quitButtonPressed() ) ); + fQuitButton = std::make_unique( tr("Quit") ); + fVbox->addWidget(fQuitButton.get()); + connect( fQuitButton.get(), SIGNAL( clicked() ), this, SLOT( quitButtonPressed() ) ); resize( 600, 800 ); fQuitButton->setFocus(); // QProcess related code - fProc = new QProcess( this ); + fProc = std::make_unique( this ); // make sure that the system environment variables are properly set QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); @@ -75,8 +75,8 @@ PDumpOutputHandler::PDumpOutputHandler(QVector &cmd) for (int i=1; istart(program, arguments); @@ -110,10 +110,6 @@ PDumpOutputHandler::~PDumpOutputHandler() qDebug() << msg << Qt::endl; system(cmd.toLatin1()); } - if (fProc) { - delete fProc; - fProc = 0; - } } //---------------------------------------------------------------------------------------------------- diff --git a/src/musredit_qt6/musredit/PDumpOutputHandler.h b/src/musredit_qt6/musredit/PDumpOutputHandler.h index 2977b413..e8b8f175 100644 --- a/src/musredit_qt6/musredit/PDumpOutputHandler.h +++ b/src/musredit_qt6/musredit/PDumpOutputHandler.h @@ -40,6 +40,7 @@ #include #include +#include //--------------------------------------------------------------------------------------- /** @@ -62,11 +63,11 @@ class PDumpOutputHandler : public QDialog private: qint64 fProcPID; ///< keeps the process PID - QProcess *fProc; ///< pointer to the dump_header process + std::unique_ptr fProc; ///< pointer to the dump_header process - QVBoxLayout *fVbox; ///< pointer to the dialog layout manager - QTextEdit *fOutput; ///< the captured dump_header output is written (read only) into this text edit object. - QPushButton *fQuitButton; ///< quit button + std::unique_ptr fVbox; ///< pointer to the dialog layout manager + std::unique_ptr fOutput; ///< the captured dump_header output is written (read only) into this text edit object. + std::unique_ptr fQuitButton; ///< quit button }; #endif // _PDUMPOUTPUTHANDLER_H_ diff --git a/src/musredit_qt6/musredit/PFitOutputHandler.cpp b/src/musredit_qt6/musredit/PFitOutputHandler.cpp index dcc0d2d7..8a5e047f 100644 --- a/src/musredit_qt6/musredit/PFitOutputHandler.cpp +++ b/src/musredit_qt6/musredit/PFitOutputHandler.cpp @@ -46,22 +46,22 @@ PFitOutputHandler::PFitOutputHandler(QString workingDirectory, QVector return; // Layout - fVbox = new QVBoxLayout( this ); + fVbox = std::make_unique( this ); //Qt.3x fVbox->resize(800, 500); - fOutput = new QPlainTextEdit(); + fOutput = std::make_unique(); fOutput->setMaximumBlockCount(1000); - fVbox->addWidget(fOutput); + fVbox->addWidget(fOutput.get()); fOutput->setMinimumSize(800, 455); fOutput->setReadOnly(true); - connect( fOutput, SIGNAL( destroyed() ), this, SLOT( quitButtonPressed() ) ); - fQuitButton = new QPushButton( tr("Fitting...") ); - fVbox->addWidget(fQuitButton); - connect( fQuitButton, SIGNAL( clicked() ), this, SLOT( quitButtonPressed() ) ); + connect( fOutput.get(), SIGNAL( destroyed() ), this, SLOT( quitButtonPressed() ) ); + fQuitButton = std::make_unique( tr("Fitting...") ); + fVbox->addWidget(fQuitButton.get()); + connect( fQuitButton.get(), SIGNAL( clicked() ), this, SLOT( quitButtonPressed() ) ); resize( 800, 500 ); fQuitButton->setFocus(); // QProcess related code - fProc = new QProcess( this ); + fProc = std::make_unique( this ); // make sure that the system environment variables are properly set QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); @@ -79,9 +79,9 @@ PFitOutputHandler::PFitOutputHandler(QString workingDirectory, QVector for (int i=1; istart(program, arguments); if ( !fProc->waitForStarted() ) { @@ -113,10 +113,6 @@ PFitOutputHandler::~PFitOutputHandler() qDebug() << msg << Qt::endl; system(cmd.toLatin1()); } - if (fProc) { - delete fProc; - fProc = nullptr; - } } //---------------------------------------------------------------------------------------------------- diff --git a/src/musredit_qt6/musredit/PFitOutputHandler.h b/src/musredit_qt6/musredit/PFitOutputHandler.h index 1f81b952..efae7de5 100644 --- a/src/musredit_qt6/musredit/PFitOutputHandler.h +++ b/src/musredit_qt6/musredit/PFitOutputHandler.h @@ -40,6 +40,7 @@ #include #include +#include //--------------------------------------------------------------------------------------- /** @@ -63,11 +64,11 @@ class PFitOutputHandler : public QDialog private: qint64 fProcPID; ///< keeps the process PID - QProcess *fProc; ///< pointer to the musrfit process + std::unique_ptr fProc; ///< pointer to the musrfit process - QVBoxLayout *fVbox; ///< pointer to the dialog layout manager - QPlainTextEdit *fOutput; ///< the captured musrfit output is written (read only) into this text edit object. - QPushButton *fQuitButton; ///< quit button, either to interrupt the fit or to close the dialog at the end of the fit. + std::unique_ptr fVbox; ///< pointer to the dialog layout manager + std::unique_ptr fOutput; ///< the captured musrfit output is written (read only) into this text edit object. + std::unique_ptr fQuitButton; ///< quit button, either to interrupt the fit or to close the dialog at the end of the fit. }; #endif // _PFITOUTPUTHANDLER_H_ diff --git a/src/musredit_qt6/musredit/PPrefsDialog.cpp b/src/musredit_qt6/musredit/PPrefsDialog.cpp index b9342a0a..ee3745a8 100644 --- a/src/musredit_qt6/musredit/PPrefsDialog.cpp +++ b/src/musredit_qt6/musredit/PPrefsDialog.cpp @@ -27,6 +27,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include + #include "PChangeDefaultPathsDialog.h" #include "PPrefsDialog.h" @@ -129,13 +131,11 @@ void PPrefsDialog::dumpRoot() */ void PPrefsDialog::handleDefaultPaths() { - PChangeDefaultPathsDialog *dlg = new PChangeDefaultPathsDialog(); + std::unique_ptr dlg = std::make_unique(); if (dlg->exec() == QDialog::Accepted) { } - - delete dlg; } //---------------------------------------------------------------------------------------------------- diff --git a/src/musredit_qt6/musredit/PSubTextEdit.cpp b/src/musredit_qt6/musredit/PSubTextEdit.cpp index 5e90ed97..3b53306c 100644 --- a/src/musredit_qt6/musredit/PSubTextEdit.cpp +++ b/src/musredit_qt6/musredit/PSubTextEdit.cpp @@ -27,6 +27,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include + #include #include #include @@ -94,17 +96,15 @@ int PSubTextEdit::getFitType() void PSubTextEdit::insertTitle() { // for the time being the url's are hard coded but should be transfered to the XML startup - PGetTitleBlockDialog *dlg = new PGetTitleBlockDialog(fAdmin->getHelpUrl("title")); + std::unique_ptr dlg = std::make_unique(fAdmin->getHelpUrl("title")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { QString title = dlg->getTitle(); insertPlainText(title+"\n"); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- @@ -114,16 +114,14 @@ void PSubTextEdit::insertTitle() void PSubTextEdit::insertParameterBlock() { // for the time being the url's are hard coded but should be transfered to the XML startup - PGetParameterBlockDialog *dlg = new PGetParameterBlockDialog(fAdmin->getHelpUrl("parameters")); + std::unique_ptr dlg = std::make_unique(fAdmin->getHelpUrl("parameters")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { insertPlainText(dlg->getParams()); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- @@ -178,17 +176,15 @@ void PSubTextEdit::insertTheoryFunction(QString name) void PSubTextEdit::insertTheoryBlock() { // for the time being the url's are hard coded but should be transfered to the XML startup - PGetTheoryBlockDialog *dlg = new PGetTheoryBlockDialog(fAdmin, fAdmin->getHelpUrl("theory")); + std::unique_ptr dlg = std::make_unique(fAdmin, fAdmin->getHelpUrl("theory")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { insertPlainText(dlg->getTheoryBlock()); insertPlainText("\n"); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- @@ -198,17 +194,15 @@ void PSubTextEdit::insertTheoryBlock() void PSubTextEdit::insertFunctionBlock() { // for the time being the url's are hard coded but should be transfered to the XML startup - PGetFunctionsBlockDialog *dlg = new PGetFunctionsBlockDialog(fAdmin->getHelpUrl("functions")); + std::unique_ptr dlg = std::make_unique(fAdmin->getHelpUrl("functions")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { insertPlainText(dlg->getFunctionsBlock()); insertPlainText("\n\n"); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- @@ -218,9 +212,9 @@ void PSubTextEdit::insertFunctionBlock() void PSubTextEdit::insertAsymRunBlock() { // for the time being the url's are hard coded but should be transfered to the XML startup - PGetAsymmetryRunBlockDialog *dlg = new PGetAsymmetryRunBlockDialog(fAdmin->getHelpUrl("run")); + std::unique_ptr dlg = std::make_unique(fAdmin->getHelpUrl("run")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { @@ -314,8 +308,6 @@ void PSubTextEdit::insertAsymRunBlock() // insert Asymmetry Run Block at the current cursor position insertPlainText(str); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- @@ -325,9 +317,9 @@ void PSubTextEdit::insertAsymRunBlock() void PSubTextEdit::insertSingleHistRunBlock() { // for the time being the url's are hard coded but should be transfered to the XML startup - PGetSingleHistoRunBlockDialog *dlg = new PGetSingleHistoRunBlockDialog(fAdmin->getHelpUrl("run")); + std::unique_ptr dlg = std::make_unique(fAdmin->getHelpUrl("run")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { @@ -421,8 +413,6 @@ void PSubTextEdit::insertSingleHistRunBlock() // insert Single Histogram Run Block at the current cursor position insertPlainText(str); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- @@ -431,9 +421,9 @@ void PSubTextEdit::insertSingleHistRunBlock() */ void PSubTextEdit::insertNonMusrRunBlock() { - PGetNonMusrRunBlockDialog *dlg = new PGetNonMusrRunBlockDialog(fAdmin->getHelpUrl("run")); + std::unique_ptr dlg = std::make_unique(fAdmin->getHelpUrl("run")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { @@ -484,8 +474,6 @@ void PSubTextEdit::insertNonMusrRunBlock() // insert NonMusr Run Block at the current cursor position insertPlainText(str); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- @@ -511,16 +499,14 @@ void PSubTextEdit::insertCommandBlock() void PSubTextEdit::insertFourierBlock() { // for the time being the url's are hard coded but should be transfered to the XML startup - PGetFourierBlockDialog *dlg = new PGetFourierBlockDialog(fAdmin->getHelpUrl("fourier")); + std::unique_ptr dlg = std::make_unique(fAdmin->getHelpUrl("fourier")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { insertPlainText(dlg->getFourierBlock()+"\n"); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- @@ -530,16 +516,14 @@ void PSubTextEdit::insertFourierBlock() void PSubTextEdit::insertPlotBlock() { // for the time being the url's are hard coded but should be transfered to the XML startup - PGetPlotBlockDialog *dlg = new PGetPlotBlockDialog(fAdmin->getHelpUrl("plot")); + std::unique_ptr dlg = std::make_unique(fAdmin->getHelpUrl("plot")); - if (dlg == 0) + if (dlg == nullptr) return; if (dlg->exec() == QDialog::Accepted) { insertPlainText(dlg->getPlotBlock()+"\n"); } - - delete dlg; } //---------------------------------------------------------------------------------------------------- diff --git a/src/musredit_qt6/musredit/PTextEdit.cpp b/src/musredit_qt6/musredit/PTextEdit.cpp index 755198fd..48a8f9b2 100644 --- a/src/musredit_qt6/musredit/PTextEdit.cpp +++ b/src/musredit_qt6/musredit/PTextEdit.cpp @@ -91,7 +91,7 @@ PTextEdit::PTextEdit( QWidget *parent ) bool gotTheme = getTheme(); // reads and manages the conents of the xml-startup (musredit_startup.xml) file - fAdmin = new PAdmin(); + fAdmin = std::make_unique(); // set default setting of the fDarkMenuIconIcons only if a theme has been recognized, otherwise take the // one from the xml startup file. @@ -166,10 +166,6 @@ PTextEdit::PTextEdit( QWidget *parent ) */ void PTextEdit::aboutToQuit() { - if (fAdmin) { - delete fAdmin; - fAdmin = nullptr; - } if (fMusrT0Action) { delete fMusrT0Action; fMusrT0Action = nullptr; @@ -983,7 +979,7 @@ void PTextEdit::load( const QString &f, const int index ) return; // create a new text edit object - PSubTextEdit *edit = new PSubTextEdit( fAdmin ); + PSubTextEdit *edit = new PSubTextEdit( fAdmin.get() ); edit->setFont(QFont(fAdmin->getFontName(), fAdmin->getFontSize())); // place the text edit object at the appropriate tab position @@ -1167,7 +1163,7 @@ void PTextEdit::insertStatisticBlock() */ void PTextEdit::fileNew() { - PSubTextEdit *edit = new PSubTextEdit( fAdmin ); + PSubTextEdit *edit = new PSubTextEdit( fAdmin.get() ); edit->setFont(QFont(fAdmin->getFontName(), fAdmin->getFontSize())); doConnections( edit ); fTabWidget->addTab( edit, tr( "noname" ) ); @@ -2703,7 +2699,7 @@ void PTextEdit::musrFT() */ void PTextEdit::musrPrefs() { - PPrefsDialog *dlg = new PPrefsDialog(fAdmin); + PPrefsDialog *dlg = new PPrefsDialog(fAdmin.get()); if (dlg == nullptr) { QMessageBox::critical(this, "ERROR musrPrefs", "Couldn't invoke Preferences Dialog."); diff --git a/src/musredit_qt6/musredit/PTextEdit.h b/src/musredit_qt6/musredit/PTextEdit.h index 89e2ae7b..af70ff47 100644 --- a/src/musredit_qt6/musredit/PTextEdit.h +++ b/src/musredit_qt6/musredit/PTextEdit.h @@ -43,7 +43,9 @@ #include +#include +#include "PAdmin.h" #include "musredit.h" class PSubTextEdit; @@ -167,7 +169,7 @@ private slots: private: bool fDarkMenuIcon; ///< flag indicating if a dark or plain icon shall be used in the menu pull-downs bool fDarkToolBarIcon; ///< flag indicating if a dark or plain icon shall be used in the toolbar - PAdmin *fAdmin; ///< pointer to the xml-startup file informations. Needed for different purposes like default working- and executable directories etc. + std::unique_ptr fAdmin; ///< pointer to the xml-startup file informations. Needed for different purposes like default working- and executable directories etc. QFileSystemWatcher *fFileSystemWatcher; ///< checks if msr-files are changing on the disk while being open in musredit. bool fFileSystemWatcherActive; ///< flag to enable/disable the file system watcher QTimer fFileSystemWatcherTimeout; ///< timer used to re-enable file system watcher. Needed to delay the re-enabling diff --git a/src/musredit_qt6/musredit/main.cpp b/src/musredit_qt6/musredit/main.cpp index 31b6ce6b..799c2471 100644 --- a/src/musredit_qt6/musredit/main.cpp +++ b/src/musredit_qt6/musredit/main.cpp @@ -28,6 +28,7 @@ ***************************************************************************/ #include +#include #include @@ -66,12 +67,12 @@ int main( int argc, char ** argv ) QApplication a( argc, argv ); - PTextEdit *mw = new PTextEdit(); + std::unique_ptr mw = std::make_unique(); mw->setWindowTitle( "MusrFit Editor" ); mw->resize( mw->getEditW(), mw->getEditH() ); mw->show(); a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); - a.connect( &a, SIGNAL( aboutToQuit() ), mw, SLOT( aboutToQuit() ) ); + a.connect( &a, SIGNAL( aboutToQuit() ), mw.get(), SLOT( aboutToQuit() ) ); return a.exec(); }