mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 00:59:44 -06:00
Merge pull request #5764 from ligfx/cleanuplogmanager
LogManager: clean ups and encapsulate config file management
This commit is contained in:
@ -12,7 +12,6 @@
|
||||
#include <wx/validate.h>
|
||||
|
||||
#include "Common/FileUtil.h"
|
||||
#include "Common/IniFile.h"
|
||||
#include "Common/Logging/ConsoleListener.h"
|
||||
#include "Common/Logging/Log.h"
|
||||
#include "Common/Logging/LogManager.h"
|
||||
@ -90,39 +89,18 @@ void LogConfigWindow::CreateGUIControls()
|
||||
|
||||
void LogConfigWindow::LoadSettings()
|
||||
{
|
||||
IniFile ini;
|
||||
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
|
||||
|
||||
IniFile::Section* options = ini.GetOrCreateSection("Options");
|
||||
|
||||
// Retrieve the verbosity value from the config ini file.
|
||||
int verbosity;
|
||||
options->Get("Verbosity", &verbosity, 0);
|
||||
|
||||
// Ensure the verbosity level is valid.
|
||||
if (verbosity < 1)
|
||||
verbosity = 1;
|
||||
if (verbosity > MAX_LOGLEVEL)
|
||||
verbosity = MAX_LOGLEVEL;
|
||||
|
||||
// Actually set the logging verbosity.
|
||||
m_verbosity->SetSelection(verbosity - 1);
|
||||
m_verbosity->SetSelection(m_LogManager->GetLogLevel());
|
||||
|
||||
// Get the logger output settings from the config ini file.
|
||||
options->Get("WriteToFile", &m_writeFile, false);
|
||||
m_writeFileCB->SetValue(m_writeFile);
|
||||
options->Get("WriteToConsole", &m_writeConsole, true);
|
||||
m_writeConsoleCB->SetValue(m_writeConsole);
|
||||
options->Get("WriteToWindow", &m_writeWindow, true);
|
||||
m_writeWindowCB->SetValue(m_writeWindow);
|
||||
m_writeFileCB->SetValue(m_LogManager->IsListenerEnabled(LogListener::FILE_LISTENER));
|
||||
m_writeConsoleCB->SetValue(m_LogManager->IsListenerEnabled(LogListener::CONSOLE_LISTENER));
|
||||
m_writeWindowCB->SetValue(m_LogManager->IsListenerEnabled(LogListener::LOG_WINDOW_LISTENER));
|
||||
|
||||
// Run through all of the log types and check each checkbox for each logging type
|
||||
// depending on its set value within the config ini.
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
|
||||
{
|
||||
bool log_enabled;
|
||||
ini.GetOrCreateSection("Logs")->Get(m_LogManager->GetShortName((LogTypes::LOG_TYPE)i),
|
||||
&log_enabled, false);
|
||||
bool log_enabled = m_LogManager->IsEnabled(static_cast<LogTypes::LOG_TYPE>(i));
|
||||
|
||||
if (log_enabled)
|
||||
enableAll = false;
|
||||
@ -133,83 +111,31 @@ void LogConfigWindow::LoadSettings()
|
||||
|
||||
void LogConfigWindow::SaveSettings()
|
||||
{
|
||||
IniFile ini;
|
||||
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
|
||||
|
||||
IniFile::Section* options = ini.GetOrCreateSection("Options");
|
||||
options->Set("Verbosity", m_verbosity->GetSelection() + 1);
|
||||
options->Set("WriteToFile", m_writeFile);
|
||||
options->Set("WriteToConsole", m_writeConsole);
|
||||
options->Set("WriteToWindow", m_writeWindow);
|
||||
|
||||
// Save all enabled/disabled states of the log types to the config ini.
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
|
||||
{
|
||||
ini.GetOrCreateSection("Logs")->Set(m_LogManager->GetShortName((LogTypes::LOG_TYPE)i),
|
||||
m_checks->IsChecked(i));
|
||||
}
|
||||
|
||||
ini.Save(File::GetUserPath(F_LOGGERCONFIG_IDX));
|
||||
m_LogManager->SaveSettings();
|
||||
}
|
||||
|
||||
// If the verbosity changes while logging
|
||||
void LogConfigWindow::OnVerbosityChange(wxCommandEvent& event)
|
||||
{
|
||||
// Get the new verbosity
|
||||
int v = m_verbosity->GetSelection() + 1;
|
||||
|
||||
// Set all log types to that verbosity level
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++)
|
||||
{
|
||||
m_LogManager->SetLogLevel((LogTypes::LOG_TYPE)i, (LogTypes::LOG_LEVELS)v);
|
||||
}
|
||||
m_LogManager->SetLogLevel(static_cast<LogTypes::LOG_LEVELS>(v));
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
void LogConfigWindow::OnWriteFileChecked(wxCommandEvent& event)
|
||||
{
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
|
||||
{
|
||||
m_writeFile = event.IsChecked();
|
||||
if (m_checks->IsChecked(i))
|
||||
{
|
||||
if (m_writeFile)
|
||||
m_LogManager->AddListener((LogTypes::LOG_TYPE)i, LogListener::FILE_LISTENER);
|
||||
else
|
||||
m_LogManager->RemoveListener((LogTypes::LOG_TYPE)i, LogListener::FILE_LISTENER);
|
||||
}
|
||||
}
|
||||
m_LogManager->EnableListener(LogListener::FILE_LISTENER, event.IsChecked());
|
||||
}
|
||||
|
||||
void LogConfigWindow::OnWriteConsoleChecked(wxCommandEvent& event)
|
||||
{
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
|
||||
{
|
||||
m_writeConsole = event.IsChecked();
|
||||
if (m_checks->IsChecked(i))
|
||||
{
|
||||
if (m_writeConsole)
|
||||
m_LogManager->AddListener((LogTypes::LOG_TYPE)i, LogListener::CONSOLE_LISTENER);
|
||||
else
|
||||
m_LogManager->RemoveListener((LogTypes::LOG_TYPE)i, LogListener::CONSOLE_LISTENER);
|
||||
}
|
||||
}
|
||||
m_LogManager->EnableListener(LogListener::CONSOLE_LISTENER, event.IsChecked());
|
||||
}
|
||||
|
||||
void LogConfigWindow::OnWriteWindowChecked(wxCommandEvent& event)
|
||||
{
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
|
||||
{
|
||||
m_writeWindow = event.IsChecked();
|
||||
if (m_checks->IsChecked(i))
|
||||
{
|
||||
if (m_writeWindow)
|
||||
m_LogManager->AddListener((LogTypes::LOG_TYPE)i, LogListener::LOG_WINDOW_LISTENER);
|
||||
else
|
||||
m_LogManager->RemoveListener((LogTypes::LOG_TYPE)i, LogListener::LOG_WINDOW_LISTENER);
|
||||
}
|
||||
}
|
||||
m_LogManager->EnableListener(LogListener::LOG_WINDOW_LISTENER, event.IsChecked());
|
||||
}
|
||||
|
||||
void LogConfigWindow::OnToggleAll(wxCommandEvent& WXUNUSED(event))
|
||||
@ -223,26 +149,8 @@ void LogConfigWindow::OnToggleAll(wxCommandEvent& WXUNUSED(event))
|
||||
void LogConfigWindow::ToggleLog(int _logType, bool enable)
|
||||
{
|
||||
LogTypes::LOG_TYPE logType = (LogTypes::LOG_TYPE)_logType;
|
||||
|
||||
m_checks->Check(_logType, enable);
|
||||
|
||||
m_LogManager->SetEnable(logType, enable);
|
||||
|
||||
if (enable)
|
||||
{
|
||||
if (m_writeWindow)
|
||||
m_LogManager->AddListener(logType, LogListener::LOG_WINDOW_LISTENER);
|
||||
if (m_writeFile)
|
||||
m_LogManager->AddListener(logType, LogListener::FILE_LISTENER);
|
||||
if (m_writeConsole)
|
||||
m_LogManager->AddListener(logType, LogListener::CONSOLE_LISTENER);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_LogManager->RemoveListener(logType, LogListener::LOG_WINDOW_LISTENER);
|
||||
m_LogManager->RemoveListener(logType, LogListener::FILE_LISTENER);
|
||||
m_LogManager->RemoveListener(logType, LogListener::CONSOLE_LISTENER);
|
||||
}
|
||||
}
|
||||
|
||||
void LogConfigWindow::OnLogCheck(wxCommandEvent& event)
|
||||
|
@ -22,7 +22,6 @@ public:
|
||||
|
||||
private:
|
||||
LogManager* m_LogManager;
|
||||
bool m_writeFile, m_writeConsole, m_writeWindow;
|
||||
bool enableAll;
|
||||
|
||||
// Controls
|
||||
|
@ -133,11 +133,7 @@ void CLogWindow::RemoveAllListeners()
|
||||
return;
|
||||
m_has_listeners = false;
|
||||
|
||||
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
|
||||
{
|
||||
m_LogManager->RemoveListener(static_cast<LogTypes::LOG_TYPE>(i),
|
||||
LogListener::LOG_WINDOW_LISTENER);
|
||||
}
|
||||
m_LogManager->EnableListener(LogListener::LOG_WINDOW_LISTENER, false);
|
||||
}
|
||||
|
||||
void CLogWindow::SaveSettings()
|
||||
|
Reference in New Issue
Block a user