Allow to display position logs also in the console window

* added requestUiConsoleMessage
* utility functions
This commit is contained in:
Klaus Basan
2018-02-25 13:52:06 +01:00
parent d3f46f948a
commit 3f086e1d52
8 changed files with 51 additions and 5 deletions

View File

@@ -118,6 +118,9 @@ namespace BlackCore
//! Relevant simulator messages to be explicitly displayed
void driverMessages(const BlackMisc::CStatusMessageList &messages);
//! Request a console message (whatever the console maybe)
void requestUiConsoleMessage(const QString &driverMessage, bool clear);
public slots:
//! Simulator info, currently loaded plugin
virtual BlackMisc::Simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const = 0;

View File

@@ -319,6 +319,8 @@ namespace BlackCore
Q_ASSERT(c);
c = connect(simulator, &ISimulator::driverMessages, this, &IContextSimulator::driverMessages);
Q_ASSERT(c);
c = connect(simulator, &ISimulator::requestUiConsoleMessage, this, &IContextSimulator::requestUiConsoleMessage);
Q_ASSERT(c);
// log from context to simulator
c = connect(CLogHandler::instance(), &CLogHandler::localMessageLogged, this, &CContextSimulator::relayStatusMessageToSimulator);

View File

@@ -77,6 +77,10 @@ namespace BlackCore
s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
"driverMessages", this, SIGNAL(driverMessages(BlackMisc::CStatusMessageList)));
Q_ASSERT(s);
s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
"requestUiConsoleMessage", this, SIGNAL(requestUiConsoleMessage(QString, bool)));
Q_ASSERT(s);
Q_UNUSED(s);
this->relayBaseClassSignals(serviceName, connection, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName());

View File

@@ -223,6 +223,9 @@ namespace BlackCore
//! Relevant simulator messages to be explicitly displayed
void driverMessages(const BlackMisc::CStatusMessageList &messages);
//! Request a console message (whatever the console maybe)
void requestUiConsoleMessage(const QString &driverMessage, bool clear);
protected:
//! Default constructor
ISimulator(QObject *parent = nullptr);

View File

@@ -820,7 +820,11 @@ namespace BlackCore
QStringLiteral("Situation: ") % s.toQString(false, false, true, true, true, true, sep);
}
if (p.tsCurrent > 0) { dm += (dm.isEmpty() ? QStringLiteral("") : QStringLiteral("\n\n")) % QStringLiteral("Parts: ") % p.toQString(sep); }
if (!dm.isEmpty()) { this->displayStatusMessage(CStatusMessage(this).info(dm)); }
if (!dm.isEmpty())
{
this->displayStatusMessage(CStatusMessage(this).info(dm));
emit this->requestUiConsoleMessage(dm, true);
}
const int t = 4500 + (qrand() % 1000); // makes sure not always using the same time difference
QTimer::singleShot(t, this, [ = ]