diff --git a/iniedit.cpp b/iniedit.cpp index a54d656..10c745b 100644 --- a/iniedit.cpp +++ b/iniedit.cpp @@ -9,6 +9,7 @@ extern "C" { } #include +#include #include QTextStream &qStdout(); @@ -104,19 +105,27 @@ bool IniEditor::read(ParserCallback pc = NULL, void *user = NULL) return true; } -bool IniEditor::write() +bool IniEditor::write(bool fCopyToParent) { - if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) - return false; + if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) + return false; + + QTextStream ts(&file); + for (ConstLineIterator iline = ll.constBegin(); iline != ll.constEnd(); iline++) { + if (!iline->fDeleted) + ts << iline->sLine << "\n"; + } - QTextStream ts(&file); - for (ConstLineIterator iline = ll.constBegin(); iline != ll.constEnd(); iline++) { - if (!iline->fDeleted) - ts << iline->sLine << "\n"; - } + file.close(); - file.close(); - return true; + if (fCopyToParent) { + QFileInfo fi(file.fileName()); + QDir dir(fi.absoluteDir()); + dir.cdUp(); + file.copy(dir.absoluteFilePath(fi.fileName())); + } + + return true; } void Section::dump() const diff --git a/iniedit.h b/iniedit.h index 231d278..750a95c 100644 --- a/iniedit.h +++ b/iniedit.h @@ -86,7 +86,7 @@ class IniEditor void clear(); void setFilename(const QString &sPathName); bool read(ParserCallback pc, void *user); - bool write(); + bool write(bool fCopyToParent = false); QFileDevice::FileError error() {return fe;} Section §ion(QString s); diff --git a/machineeditor.cpp b/machineeditor.cpp index e001f91..3096021 100644 --- a/machineeditor.cpp +++ b/machineeditor.cpp @@ -180,7 +180,7 @@ void MachineEditor::saveToIni() psect->setValue(sStepsPerMm, ui->dsbBStepsPer->value(), pmachine->b.steps_per_mm, 31); psect->setValue(sMaxFeedrate, ui->dsbBMaxFeedrate->value(), pmachine->b.max_feedrate, 0); - ie.write(); + ie.write(true); } void MachineEditor::onRestoreDefaultsClicked() diff --git a/main.cpp b/main.cpp index 6b9550e..77dbced 100644 --- a/main.cpp +++ b/main.cpp @@ -86,7 +86,7 @@ static void setPathForAppDir(bool fRemove) if (sPath.isEmpty()) settings.setValue("PATH", a.applicationDirPath()); else if (!sPath.contains(a.applicationDirPath())) - settings.setValue("PATH", sPath + ";" + a.applicationDirPath()); + settings.setValue("PATH", a.applicationDirPath() + ";" + sPath); else return; } @@ -124,39 +124,36 @@ int main(int argc, char *argv[]) if (clp.isSet(cloInstall)) { setPathForAppDir(false); - QMessageBox mbox; - mbox.setText(QString("--squirrel-install %1").arg(clp.value(cloInstall))); - mbox.exec(); runUpdate("--createShortcut=GpxUi.exe", false); return 0; } else if(clp.isSet(cloUpdated)) { - // TODO copy *.ini from the obsolete folder + QDir dirSrc = GpxUiInfo::iniLocation(); + QDir dirDest = dirSrc; + dirSrc.cdUp(); + + QStringList slFilters; + slFilters << "*.ini"; + + QStringList sl = dirSrc.entryList(slFilters); + int is = sl.size(); + while (is--) { + QFile::copy(dirSrc.absoluteFilePath(sl[is]), dirDest.absoluteFilePath(sl[is])); + } + setPathForAppDir(false); - QMessageBox mbox; - mbox.setText(QString("--squirrel-updated %1").arg(clp.value(cloUpdated))); - mbox.exec(); return 0; } else if (clp.isSet(cloObsolete)) { setPathForAppDir(true); - QMessageBox mbox; - mbox.setText(QString("--squirrel-obsolete %1").arg(clp.value(cloObsolete))); - mbox.exec(); return 0; } else if (clp.isSet(cloUninstall)) { runUpdate("--removeShortcut=GpxUi.exe", true); setPathForAppDir(true); - QMessageBox mbox; - mbox.setText(QString("--squirrel-uninstall %1").arg(clp.value(cloUninstall))); - mbox.exec(); return 0; } else if (clp.isSet(cloFirstRun)) { - QMessageBox mbox; - mbox.setText(QString("--squirrel-firstrun %1").arg(clp.value(cloFirstRun))); - mbox.exec(); } else { clp.showHelp(); diff --git a/mainwindow.cpp b/mainwindow.cpp index 8cdd8ee..c238e33 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -241,7 +241,7 @@ void MainWindow::saveToIni() psect->setValue("active_temperature", ui->sbRightTemp->value(), 0); psect->setValue("standby_temperature", ui->sbRightStandby->value(), 0); - ie.write(); + ie.write(true); } void MainWindow::on_btnDefaults_clicked()