diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-02-08 20:01:42 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-02-08 20:01:42 +0100 |
commit | 8bbaab334c5116be4c180c3eac93c4acc844f4bd (patch) | |
tree | ddb2796f0cfe574bec2132e98eff675d2ccccb59 /api/logic | |
parent | 155de307bc6ef1a42226831550680110e00dc8c3 (diff) | |
download | MultiMC-8bbaab334c5116be4c180c3eac93c4acc844f4bd.tar MultiMC-8bbaab334c5116be4c180c3eac93c4acc844f4bd.tar.gz MultiMC-8bbaab334c5116be4c180c3eac93c4acc844f4bd.tar.lz MultiMC-8bbaab334c5116be4c180c3eac93c4acc844f4bd.tar.xz MultiMC-8bbaab334c5116be4c180c3eac93c4acc844f4bd.zip |
NOISSUE set line limit and overflow behaviour even for hidden console
Diffstat (limited to 'api/logic')
-rw-r--r-- | api/logic/BaseInstance.cpp | 21 | ||||
-rw-r--r-- | api/logic/BaseInstance.h | 3 | ||||
-rw-r--r-- | api/logic/launch/LaunchTask.cpp | 6 | ||||
-rw-r--r-- | api/logic/launch/LogModel.cpp | 5 | ||||
-rw-r--r-- | api/logic/launch/LogModel.h | 1 | ||||
-rw-r--r-- | api/logic/settings/PassthroughSetting.cpp | 5 |
6 files changed, 40 insertions, 1 deletions
diff --git a/api/logic/BaseInstance.cpp b/api/logic/BaseInstance.cpp index 335ef392..6d719c32 100644 --- a/api/logic/BaseInstance.cpp +++ b/api/logic/BaseInstance.cpp @@ -51,6 +51,9 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s m_settings->registerOverride(globalSettings->getSetting("AutoCloseConsole"), consoleSetting); m_settings->registerOverride(globalSettings->getSetting("ShowConsoleOnError"), consoleSetting); m_settings->registerOverride(globalSettings->getSetting("LogPrePostOutput"), consoleSetting); + + m_settings->registerPassthrough(globalSettings->getSetting("ConsoleMaxLines"), nullptr); + m_settings->registerPassthrough(globalSettings->getSetting("ConsoleOverflowStop"), nullptr); } QString BaseInstance::getPreLaunchCommand() @@ -68,6 +71,24 @@ QString BaseInstance::getPostExitCommand() return settings()->get("PostExitCommand").toString(); } +int BaseInstance::getConsoleMaxLines() const +{ + auto lineSetting = settings()->getSetting("ConsoleMaxLines"); + bool conversionOk = false; + int maxLines = lineSetting->get().toInt(&conversionOk); + if(!conversionOk) + { + maxLines = lineSetting->defValue().toInt(); + qWarning() << "ConsoleMaxLines has nonsensical value, defaulting to" << maxLines; + } + return maxLines; +} + +bool BaseInstance::shouldStopOnConsoleOverflow() const +{ + return settings()->get("ConsoleOverflowStop").toBool(); +} + void BaseInstance::iconUpdated(QString key) { if(iconKey() == key) diff --git a/api/logic/BaseInstance.h b/api/logic/BaseInstance.h index 462b7c66..27b167a6 100644 --- a/api/logic/BaseInstance.h +++ b/api/logic/BaseInstance.h @@ -263,6 +263,9 @@ public: Status currentStatus() const; + int getConsoleMaxLines() const; + bool shouldStopOnConsoleOverflow() const; + protected: void changeStatus(Status newStatus); diff --git a/api/logic/launch/LaunchTask.cpp b/api/logic/launch/LaunchTask.cpp index 9df5f85a..23c28f50 100644 --- a/api/logic/launch/LaunchTask.cpp +++ b/api/logic/launch/LaunchTask.cpp @@ -209,6 +209,12 @@ shared_qobject_ptr<LogModel> LaunchTask::getLogModel() if(!m_logModel) { m_logModel.reset(new LogModel()); + m_logModel->setMaxLines(m_instance->getConsoleMaxLines()); + m_logModel->setStopOnOverflow(m_instance->shouldStopOnConsoleOverflow()); + // FIXME: should this really be here? + m_logModel->setOverflowMessage(tr("MultiMC stopped watching the game log because the log length surpassed %1 lines.\n" + "You may have to fix your mods because the game is still logging to files and" + " likely wasting harddrive space at an alarming rate!").arg(m_logModel->getMaxLines())); } return m_logModel; } diff --git a/api/logic/launch/LogModel.cpp b/api/logic/launch/LogModel.cpp index 579aa654..042feeab 100644 --- a/api/logic/launch/LogModel.cpp +++ b/api/logic/launch/LogModel.cpp @@ -133,6 +133,11 @@ void LogModel::setMaxLines(int maxLines) m_maxLines = maxLines; } +int LogModel::getMaxLines() +{ + return m_maxLines; +} + void LogModel::setStopOnOverflow(bool stop) { m_stopOnOverflow = stop; diff --git a/api/logic/launch/LogModel.h b/api/logic/launch/LogModel.h index 558242d8..57cd23b0 100644 --- a/api/logic/launch/LogModel.h +++ b/api/logic/launch/LogModel.h @@ -21,6 +21,7 @@ public: QString toPlainText(); + int getMaxLines(); void setMaxLines(int maxLines); void setStopOnOverflow(bool stop); void setOverflowMessage(const QString & overflowMessage); diff --git a/api/logic/settings/PassthroughSetting.cpp b/api/logic/settings/PassthroughSetting.cpp index 3839361c..2a407260 100644 --- a/api/logic/settings/PassthroughSetting.cpp +++ b/api/logic/settings/PassthroughSetting.cpp @@ -19,13 +19,16 @@ PassthroughSetting::PassthroughSetting(std::shared_ptr<Setting> other, std::shar : Setting(other->configKeys(), QVariant()) { Q_ASSERT(other); - Q_ASSERT(gate); m_other = other; m_gate = gate; } bool PassthroughSetting::isOverriding() const { + if(!m_gate) + { + return false; + } return m_gate->get().toBool(); } |