diff --git a/src/blackgui/components/interpolationlogdisplay.cpp b/src/blackgui/components/interpolationlogdisplay.cpp
index 3d9d096d3..b904ad96a 100644
--- a/src/blackgui/components/interpolationlogdisplay.cpp
+++ b/src/blackgui/components/interpolationlogdisplay.cpp
@@ -83,6 +83,7 @@ namespace BlackGui
connect(ui->pb_GetLastInterpolation, &QPushButton::released, this, &CInterpolationLogDisplay::getLogAmdDisplayLastInterpolation);
connect(ui->pb_InjectElevation, &QPushButton::released, this, &CInterpolationLogDisplay::onInjectElevation);
connect(ui->pb_ElvClear, &QPushButton::released, this, &CInterpolationLogDisplay::clearElevationResults);
+ connect(ui->pb_RecalcAllAircraft, &QPushButton::released, this, &CInterpolationLogDisplay::requestRecalculateAll);
connect(ui->pb_ClearLog, &QPushButton::released, this, &CInterpolationLogDisplay::clearLogCommand);
connect(ui->pb_ClearLog2, &QPushButton::released, this, &CInterpolationLogDisplay::clearLogCommand);
connect(ui->pb_WriteLogToFile, &QPushButton::released, this, &CInterpolationLogDisplay::writeLogCommand);
@@ -184,7 +185,7 @@ namespace BlackGui
void CInterpolationLogDisplay::getLogAmdDisplayLastInterpolation()
{
- if (!m_simulator) { return; }
+ if (!this->canLog()) { return; }
const SituationLog sLog = m_simulator->interpolationLogger().getLastSituationLog();
this->displayLastInterpolation(sLog);
}
@@ -218,7 +219,7 @@ namespace BlackGui
void CInterpolationLogDisplay::onCallsignEntered()
{
- if (!m_simulator)
+ if (!this->canLog())
{
this->stop();
CLogMessage(this).warning(u"Stopping logging (log.display), no simulator");
@@ -256,7 +257,7 @@ namespace BlackGui
void CInterpolationLogDisplay::onPseudoElevationToggled(bool checked)
{
- if (!m_simulator) { return; }
+ if (!this->canLog()) { return; }
m_simulator->setTestEnablePseudoElevation(checked);
CAltitude elvTest = CAltitude::null();
@@ -291,7 +292,7 @@ namespace BlackGui
void CInterpolationLogDisplay::followInSimulator()
{
if (m_callsign.isEmpty()) { return; }
- if (!m_simulator) { return; }
+ if (!this->canLog()) { return; }
m_simulator->followAircraft(m_callsign);
}
@@ -416,7 +417,7 @@ namespace BlackGui
void CInterpolationLogDisplay::onInjectElevation()
{
- if (!m_simulator) { return; }
+ if (!this->canLog()) { return; }
const QString elv = ui->le_InjectElevation->text().trimmed();
if (elv.isEmpty()) { return; }
@@ -584,13 +585,13 @@ namespace BlackGui
void CInterpolationLogDisplay::requestElevation(const CAircraftSituation &situation)
{
- if (!m_simulator) { return; }
+ if (!this->canLog()) { return; }
m_simulator->requestElevationBySituation(situation);
}
void CInterpolationLogDisplay::requestElevationAtPosition()
{
- if (!m_simulator) { return; }
+ if (!this->canLog()) { return; }
const CCoordinateGeodetic coordinate = ui->editor_ElevationCoordinate->getCoordinate();
const bool ok = m_simulator->requestElevation(coordinate, CInterpolationLogDisplay::pseudoCallsignElevation());
if (ok)
@@ -605,6 +606,17 @@ namespace BlackGui
}
}
+ void CInterpolationLogDisplay::requestRecalculateAll()
+ {
+ if (!this->canLog()) { return; }
+ sApp->getIContextSimulator()->recalculateAllAircraft();
+ }
+
+ bool CInterpolationLogDisplay::canLog() const
+ {
+ return (sApp && !sApp->isShuttingDown() && sApp->getIContextSimulator() && m_simulator);
+ }
+
const CCallsign &CInterpolationLogDisplay::pseudoCallsignElevation()
{
static const CCallsign cs("SW1LOX");
diff --git a/src/blackgui/components/interpolationlogdisplay.h b/src/blackgui/components/interpolationlogdisplay.h
index fce0cdb06..8e2965c72 100644
--- a/src/blackgui/components/interpolationlogdisplay.h
+++ b/src/blackgui/components/interpolationlogdisplay.h
@@ -177,6 +177,12 @@ namespace BlackGui
//! Request arbitrary elevation
void requestElevationAtPosition();
+ //! Do a full interpolation cycle for a while
+ void requestRecalculateAll();
+
+ //! Can use the log. display?
+ bool canLog() const;
+
//! Pseudo callsign for CInterpolationLogDisplay::requestElevationAtPosition
static const BlackMisc::Aviation::CCallsign &pseudoCallsignElevation();
diff --git a/src/blackgui/components/interpolationlogdisplay.ui b/src/blackgui/components/interpolationlogdisplay.ui
index afc67d618..d694549e4 100644
--- a/src/blackgui/components/interpolationlogdisplay.ui
+++ b/src/blackgui/components/interpolationlogdisplay.ui
@@ -351,16 +351,6 @@
- -
-
-
- true
-
-
- simulator specific information
-
-
-
-
@@ -523,6 +513,23 @@
+ -
+
+
+ true
+
+
+ simulator specific information
+
+
+
+ -
+
+
+ re-calc
+
+
+