diff --git a/gui/librarydialog.cpp b/gui/librarydialog.cpp index ab393b79b..2f8d9ae60 100644 --- a/gui/librarydialog.cpp +++ b/gui/librarydialog.cpp @@ -20,12 +20,14 @@ #include "ui_librarydialog.h" #include "libraryaddfunctiondialog.h" #include "libraryeditargdialog.h" +#include "path.h" #include #include #include #include #include +#include // TODO: get/compare functions from header @@ -49,6 +51,7 @@ LibraryDialog::LibraryDialog(QWidget *parent) : { ui->setupUi(this); ui->buttonSave->setEnabled(false); + ui->buttonSaveAs->setEnabled(false); ui->sortFunctions->setEnabled(false); ui->filter->setEnabled(false); ui->addFunction->setEnabled(false); @@ -84,13 +87,13 @@ void LibraryDialog::openCfg() &selectedFilter); if (!selectedFile.isEmpty()) { - mFileName.clear(); QFile file(selectedFile); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { ignoreChanges = true; data.open(file); mFileName = selectedFile; ui->buttonSave->setEnabled(false); + ui->buttonSaveAs->setEnabled(true); ui->filter->clear(); ui->functions->clear(); for (struct CppcheckLibraryData::Function &function : data.functions) { @@ -102,6 +105,13 @@ void LibraryDialog::openCfg() ui->filter->setEnabled(!data.functions.empty()); ui->addFunction->setEnabled(true); ignoreChanges = false; + } else { + QMessageBox msg(QMessageBox::Critical, + tr("Cppcheck"), + tr("Can not open file %1.").arg(selectedFile), + QMessageBox::Ok, + this); + msg.exec(); } } } @@ -115,9 +125,31 @@ void LibraryDialog::saveCfg() QTextStream ts(&file); ts << data.toString() << '\n'; ui->buttonSave->setEnabled(false); + } else { + QMessageBox msg(QMessageBox::Critical, + tr("Cppcheck"), + tr("Can not save file %1.").arg(mFileName), + QMessageBox::Ok, + this); + msg.exec(); } } +void LibraryDialog::saveCfgAs() +{ + const QString filter(tr("Library files (*.cfg)")); + const QString path = Path::getPathFromFilename(mFileName.toStdString()).c_str(); + QString selectedFile = QFileDialog::getSaveFileName(this, + tr("Save the library as"), + path, + filter); + if (!selectedFile.endsWith(".cfg", Qt::CaseInsensitive)) + selectedFile += ".cfg"; + + mFileName = selectedFile; + saveCfg(); +} + void LibraryDialog::addFunction() { LibraryAddFunctionDialog *d = new LibraryAddFunctionDialog; diff --git a/gui/librarydialog.h b/gui/librarydialog.h index 3670e888a..60987b05c 100644 --- a/gui/librarydialog.h +++ b/gui/librarydialog.h @@ -40,6 +40,7 @@ public: private slots: void openCfg(); void saveCfg(); + void saveCfgAs(); void addFunction(); void changeFunction(); void editArg(); diff --git a/gui/librarydialog.ui b/gui/librarydialog.ui index 052fb4e30..0cf2f33ef 100644 --- a/gui/librarydialog.ui +++ b/gui/librarydialog.ui @@ -30,6 +30,13 @@ + + + + Save as + + + @@ -499,6 +506,22 @@ + + buttonSaveAs + clicked() + LibraryDialog + saveCfgAs() + + + 211 + 31 + + + 232 + 33 + + + addFunction() @@ -511,5 +534,6 @@ selectFunction() sortFunctions(bool) editFunctionName(QListWidgetItem*) + saveCfgAs()