diff --git a/src/blackgui/editors/matchingform.cpp b/src/blackgui/editors/matchingform.cpp index 5df45267b..af80d7f25 100644 --- a/src/blackgui/editors/matchingform.cpp +++ b/src/blackgui/editors/matchingform.cpp @@ -170,7 +170,9 @@ namespace BlackGui { const bool nw = (QObject::sender() == ui->pb_MsReverseLookup); QString fn = nw ? ui->le_MsReverseLookup->text() : ui->le_MsMatching->text(); - fn = QFileDialog::getOpenFileName(nullptr, tr("Matching script"), fn, "Matching script (*.js)"); + CDirectories swiftDirs = m_directories.get(); + + fn = QFileDialog::getOpenFileName(nullptr, tr("Matching script"), fn.isEmpty() ? swiftDirs.getMatchingScriptDirectoryOrDefault() : fn, "Matching script (*.js)"); const QFileInfo fi(fn); if (!fi.exists()) { return; } if (nw) @@ -181,6 +183,9 @@ namespace BlackGui { ui->le_MsMatching->setText(fi.absoluteFilePath()); } + + swiftDirs.setMatchingScriptDirectory(fi.absolutePath()); + m_directories.setAndSave(swiftDirs); } CAircraftMatcherSetup::MatchingAlgorithm CMatchingForm::algorithm() const diff --git a/src/blackgui/editors/matchingform.h b/src/blackgui/editors/matchingform.h index 3dbee86d1..985ca5ee7 100644 --- a/src/blackgui/editors/matchingform.h +++ b/src/blackgui/editors/matchingform.h @@ -13,6 +13,8 @@ #include "form.h" #include "blackmisc/simulation/aircraftmatchersetup.h" +#include "blackmisc/directories.h" + #include namespace Ui { class CMatchingForm; } @@ -77,6 +79,7 @@ namespace BlackGui //! Directory browser void fileDialog(); + BlackMisc::CSetting m_directories { this }; //!< the swift directories QScopedPointer ui; }; } // ns diff --git a/src/blackgui/editors/matchingform.ui b/src/blackgui/editors/matchingform.ui index a9293d0a6..0f08335c1 100644 --- a/src/blackgui/editors/matchingform.ui +++ b/src/blackgui/editors/matchingform.ui @@ -115,7 +115,7 @@ - Matching: + Matching @@ -150,7 +150,7 @@ - Lookup: + Lookup diff --git a/src/blackmisc/directories.cpp b/src/blackmisc/directories.cpp index 293e18e61..ca61290bc 100644 --- a/src/blackmisc/directories.cpp +++ b/src/blackmisc/directories.cpp @@ -47,6 +47,15 @@ namespace BlackMisc this->setLastModelDirectory(dir); } + QString CDirectories::getMatchingScriptDirectoryOrDefault() const + { + if (m_dirMatchingScript.isEmpty()) + { + return CDirectoryUtils::shareMatchingScriptDirectory(); + } + return m_dirMatchingScript; + } + QString CDirectories::convertToQString(bool i18n) const { Q_UNUSED(i18n); @@ -59,13 +68,14 @@ namespace BlackMisc const ColumnIndex i = index.frontCasted(); switch (i) { - case IndexDirFlightPlan: return CVariant::fromValue(m_dirFlightPlan); - case IndexDirFlightPlanOrDefault: return CVariant::fromValue(this->getFlightPlanDirectoryOrDefault()); - case IndexDirLastViewJson: return CVariant::fromValue(m_dirLastViewJson); - case IndexDirLastViewJsonOrDefault: return CVariant::fromValue(this->getLastViewJsonDirectoryOrDefault()); - case IndexDirLastModelJson: return CVariant::fromValue(m_dirLastModelStashJson); + case IndexDirFlightPlan: return CVariant::fromValue(m_dirFlightPlan); + case IndexDirFlightPlanOrDefault: return CVariant::fromValue(this->getFlightPlanDirectoryOrDefault()); + case IndexDirLastViewJson: return CVariant::fromValue(m_dirLastViewJson); + case IndexDirLastViewJsonOrDefault: return CVariant::fromValue(this->getLastViewJsonDirectoryOrDefault()); + case IndexDirLastModelJson: return CVariant::fromValue(m_dirLastModelStashJson); case IndexDirLastModelJsonOrDefault: return CVariant::fromValue(this->getLastModelDirectoryOrDefault()); - case IndexDirLastModelStashJson: return CVariant::fromValue(m_dirLastModelStashJson); + case IndexDirLastModelStashJson: return CVariant::fromValue(m_dirLastModelStashJson); + case IndexDirMatchingScript: return CVariant::fromValue(this->getMatchingScriptDirectoryOrDefault()); case IndexDirLastModelStashJsonOrDefault: return CVariant::fromValue(this->getLastModelStashDirectoryOrDefault()); default: return CValueObject::propertyByIndex(index); } @@ -84,6 +94,7 @@ namespace BlackMisc case IndexDirLastModelJson: this->setLastModelDirectory(variant.toQString()); break; case IndexDirLastModelStashJsonOrDefault: case IndexDirLastModelStashJson: this->setLastModelStashDirectory(variant.toQString()); break; + case IndexDirMatchingScript: this->setMatchingScriptDirectory(variant.toQString()); break; default: CValueObject::setPropertyByIndex(index, variant); break; } } diff --git a/src/blackmisc/directories.h b/src/blackmisc/directories.h index bf755ccd5..cdfe40e13 100644 --- a/src/blackmisc/directories.h +++ b/src/blackmisc/directories.h @@ -37,7 +37,8 @@ namespace BlackMisc IndexDirLastModelJson, IndexDirLastModelJsonOrDefault, IndexDirLastModelStashJson, - IndexDirLastModelStashJsonOrDefault + IndexDirLastModelStashJsonOrDefault, + IndexDirMatchingScript }; //! Constructor @@ -85,6 +86,12 @@ namespace BlackMisc //! Last view JSON model stash directory void setLastModelStashDirectory(const QString &dir); + //! Matching script directory + QString getMatchingScriptDirectoryOrDefault() const; + + //! Matching script directory + void setMatchingScriptDirectory(const QString &dir) { m_dirMatchingScript = dir; } + //! \copydoc BlackMisc::Mixin::String::toQString QString convertToQString(bool i18n = false) const; @@ -102,6 +109,7 @@ namespace BlackMisc QString m_dirLastViewJson; //!< last JSON save directory QString m_dirLastModelJson; //!< last JSON model directory QString m_dirLastModelStashJson; //!< last JSON model stash save directory + QString m_dirMatchingScript; //!< matching script dir //! Return checkDir if existing, defaultDir otherwise QString existingOrDefaultDir(const QString &checkDir, const QString &defaultDir) const; @@ -111,7 +119,8 @@ namespace BlackMisc BLACK_METAMEMBER(dirFlightPlan), BLACK_METAMEMBER(dirLastViewJson), BLACK_METAMEMBER(dirLastModelJson), - BLACK_METAMEMBER(dirLastModelStashJson) + BLACK_METAMEMBER(dirLastModelStashJson), + BLACK_METAMEMBER(dirMatchingScript) ); }; diff --git a/src/blackmisc/directoryutils.cpp b/src/blackmisc/directoryutils.cpp index 38ae86cdd..5b9e481b5 100644 --- a/src/blackmisc/directoryutils.cpp +++ b/src/blackmisc/directoryutils.cpp @@ -241,6 +241,12 @@ namespace BlackMisc return tpd; } + const QString &CDirectoryUtils::shareMatchingScriptDirectory() + { + static const QString ms(CFileUtils::appendFilePaths(CDirectoryUtils::shareDirectory(), "matchingscript")); + return ms; + } + const QString &CDirectoryUtils::bootstrapFileName() { static const QString n("bootstrap.json"); diff --git a/src/blackmisc/directoryutils.h b/src/blackmisc/directoryutils.h index dee40f256..6bcc3728b 100644 --- a/src/blackmisc/directoryutils.h +++ b/src/blackmisc/directoryutils.h @@ -96,6 +96,9 @@ namespace BlackMisc //! FSX/P3D terrain probe static const QString &shareTerrainProbeDirectory(); + //! Matching script examples directories + static const QString &shareMatchingScriptDirectory(); + //! Bootstrap file name static const QString &bootstrapFileName();