diff --git a/bin/app/user/ApplicationSettings_template.xml b/bin/app/user/ApplicationSettings_template.xml
index 3029b232..69878893 100644
--- a/bin/app/user/ApplicationSettings_template.xml
+++ b/bin/app/user/ApplicationSettings_template.xml
@@ -18,17 +18,19 @@
-
-
+
+
+
+
diff --git a/src/app/main.cpp b/src/app/main.cpp
index 21053547..32d28c68 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -1,8 +1,5 @@
#include "utility/AppPath.h"
#include "utility/commandline/CommandLineParser.h"
-#include "utility/logging/ConsoleLogger.h"
-#include "utility/logging/FileLogger.h"
-#include "utility/logging/LogManager.h"
#include "utility/ResourcePaths.h"
#include "utility/ScopedFunctor.h"
#include "utility/UserPaths.h"
@@ -19,18 +16,6 @@
#include "qt/window/QtMainWindow.h"
#include "version.h"
-void init()
-{
- std::shared_ptr consoleLogger = std::make_shared();
- consoleLogger->setLogLevel(Logger::LOG_WARNINGS | Logger::LOG_ERRORS);
- LogManager::getInstance()->addLogger(consoleLogger);
-
- std::shared_ptr fileLogger = std::make_shared();
- fileLogger->setLogLevel(Logger::LOG_ALL);
- FileLogger::setFilePath(UserPaths::getLogPath());
- LogManager::getInstance()->addLogger(fileLogger);
-}
-
int main(int argc, char *argv[])
{
QApplication::setApplicationName("Coati");
@@ -57,7 +42,6 @@ int main(int argc, char *argv[])
QtCoreApplication qtApp(argc, argv);
setupApp(argc, argv);
- init();
Application::createInstance(version, nullptr, nullptr);
ScopedFunctor f([](){
@@ -88,15 +72,12 @@ int main(int argc, char *argv[])
QtApplication qtApp(argc, argv);
setupApp(argc, argv);
- init();
qtApp.setAttribute(Qt::AA_UseHighDpiPixmaps);
QtViewFactory viewFactory;
QtNetworkFactory networkFactory;
- utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".otf");
- utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".ttf");
Application::createInstance(version, &viewFactory, &networkFactory);
ScopedFunctor f([](){
Application::destroyInstance();
@@ -104,6 +85,9 @@ int main(int argc, char *argv[])
commandLineParser.projectLoad();
+ utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".otf");
+ utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".ttf");
+
return qtApp.exec();
}
}
diff --git a/src/lib/Application.cpp b/src/lib/Application.cpp
index bd4ec310..c7fc7fa7 100644
--- a/src/lib/Application.cpp
+++ b/src/lib/Application.cpp
@@ -1,7 +1,10 @@
#include "Application.h"
#include "utility/file/FileSystem.h"
+#include "utility/logging/ConsoleLogger.h"
+#include "utility/logging/FileLogger.h"
#include "utility/logging/logging.h"
+#include "utility/logging/LogManager.h"
#include "utility/messaging/MessageQueue.h"
#include "utility/messaging/type/MessageActivateNodes.h"
#include "utility/messaging/type/MessageDispatchWhenLicenseValid.h"
@@ -75,6 +78,23 @@ void Application::loadSettings()
std::shared_ptr settings = ApplicationSettings::getInstance();
settings->load(FilePath(UserPaths::getAppSettingsPath()));
+ LogManager* logManager = LogManager::getInstance().get();
+ if (settings->getLoggingEnabled() && !logManager->getLoggerCount())
+ {
+ std::shared_ptr consoleLogger = std::make_shared();
+ // consoleLogger->setLogLevel(Logger::LOG_WARNINGS | Logger::LOG_ERRORS);
+ logManager->addLogger(consoleLogger);
+
+ FileLogger::setFilePath(UserPaths::getLogPath());
+ std::shared_ptr fileLogger = std::make_shared();
+ fileLogger->setLogLevel(Logger::LOG_ALL);
+ logManager->addLogger(fileLogger);
+ }
+ else
+ {
+ logManager->clearLoggers();
+ }
+
loadStyle(settings->getColorSchemePath());
}
diff --git a/src/lib/settings/ApplicationSettings.cpp b/src/lib/settings/ApplicationSettings.cpp
index 28e67e9a..46a751db 100644
--- a/src/lib/settings/ApplicationSettings.cpp
+++ b/src/lib/settings/ApplicationSettings.cpp
@@ -155,6 +155,16 @@ void ApplicationSettings::setScrollSpeed(float scrollSpeed)
setValue("application/scroll_speed", scrollSpeed);
}
+bool ApplicationSettings::getLoggingEnabled() const
+{
+ return getValue("application/logging_enabled", false);
+}
+
+void ApplicationSettings::setLoggingEnabled(bool loggingEnabled)
+{
+ setValue("application/logging_enabled", loggingEnabled);
+}
+
int ApplicationSettings::getIndexerThreadCount() const
{
return getValue("indexing/indexer_thread_count", 4);
@@ -167,12 +177,12 @@ void ApplicationSettings::setIndexerThreadCount(const int count)
bool ApplicationSettings::getShowExternalNonFatalErrors() const
{
- return getValue("application/show_external_non_fatal_errors", false);
+ return getValue("indexing/show_external_non_fatal_errors", false);
}
void ApplicationSettings::setShowExternalNonFatalErrors(const bool show)
{
- setValue("application/show_external_non_fatal_errors", show);
+ setValue("indexing/show_external_non_fatal_errors", show);
}
std::string ApplicationSettings::getJavaPath() const
diff --git a/src/lib/settings/ApplicationSettings.h b/src/lib/settings/ApplicationSettings.h
index 73eda20f..172a7fbe 100644
--- a/src/lib/settings/ApplicationSettings.h
+++ b/src/lib/settings/ApplicationSettings.h
@@ -47,6 +47,9 @@ public:
float getScrollSpeed() const;
void setScrollSpeed(float scrollSpeed);
+ bool getLoggingEnabled() const;
+ void setLoggingEnabled(bool loggingEnabled);
+
// indexing
int getIndexerThreadCount() const;
void setIndexerThreadCount(const int count);
diff --git a/src/lib/utility/logging/LogManager.cpp b/src/lib/utility/logging/LogManager.cpp
index 39fcc9b8..e1feebf0 100644
--- a/src/lib/utility/logging/LogManager.cpp
+++ b/src/lib/utility/logging/LogManager.cpp
@@ -39,6 +39,11 @@ void LogManager::removeLoggersByType(const std::string& type)
m_logManagerImplementation.removeLoggersByType(type);
}
+void LogManager::clearLoggers()
+{
+ m_logManagerImplementation.clearLoggers();
+}
+
int LogManager::getLoggerCount() const
{
return m_logManagerImplementation.getLoggerCount();
diff --git a/src/lib/utility/logging/LogManager.h b/src/lib/utility/logging/LogManager.h
index 93e1f4ac..6b0d133c 100644
--- a/src/lib/utility/logging/LogManager.h
+++ b/src/lib/utility/logging/LogManager.h
@@ -18,6 +18,7 @@ public:
void addLogger(std::shared_ptr logger);
void removeLogger(std::shared_ptr logger);
void removeLoggersByType(const std::string& type);
+ void clearLoggers();
int getLoggerCount() const;
void logInfo(
diff --git a/src/lib/utility/logging/LogManagerImplementation.cpp b/src/lib/utility/logging/LogManagerImplementation.cpp
index e6e80dbe..1c11403a 100644
--- a/src/lib/utility/logging/LogManagerImplementation.cpp
+++ b/src/lib/utility/logging/LogManagerImplementation.cpp
@@ -49,6 +49,11 @@ void LogManagerImplementation::removeLoggersByType(const std::string& type)
}
}
+void LogManagerImplementation::clearLoggers()
+{
+ m_loggers.clear();
+}
+
int LogManagerImplementation::getLoggerCount() const
{
std::lock_guard lockGuard(m_loggerMutex);
diff --git a/src/lib/utility/logging/LogManagerImplementation.h b/src/lib/utility/logging/LogManagerImplementation.h
index ca8a0780..62debcf8 100644
--- a/src/lib/utility/logging/LogManagerImplementation.h
+++ b/src/lib/utility/logging/LogManagerImplementation.h
@@ -24,6 +24,7 @@ public:
void addLogger(std::shared_ptr logger);
void removeLogger(std::shared_ptr logger);
void removeLoggersByType(const std::string& type);
+ void clearLoggers();
int getLoggerCount() const;
void logInfo(
diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp
index f829c75b..ed952700 100644
--- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp
+++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp
@@ -99,6 +99,19 @@ void QtProjectWizzardContentPreferences::populateForm(QGridLayout* layout, int&
);
row++;
+ // logging
+ m_loggingEnabled = new QCheckBox("Enable console and file logging", this);
+
+ layout->addWidget(createFormLabel("Logging"), row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight);
+ layout->addWidget(m_loggingEnabled, row, QtProjectWizzardWindow::BACK_COL, Qt::AlignLeft);
+
+ addHelpButton(
+ "Save log files and show log information in the console."
+ , layout, row
+ );
+
+ row++;
+
layout->setRowMinimumHeight(row++, 20);
// indexing
@@ -191,6 +204,7 @@ void QtProjectWizzardContentPreferences::load()
}
m_scrollSpeed->setText(QString::number(appSettings->getScrollSpeed(), 'f', 1));
+ m_loggingEnabled->setChecked(appSettings->getLoggingEnabled());
m_threads->setCurrentIndex(appSettings->getIndexerThreadCount() - 1);
m_fatalErrors->setChecked(appSettings->getShowExternalNonFatalErrors());
@@ -219,6 +233,8 @@ void QtProjectWizzardContentPreferences::save()
appSettings->setScrollSpeed(scrollSpeed);
}
+ appSettings->setLoggingEnabled(m_loggingEnabled->isChecked());
+
appSettings->setIndexerThreadCount(m_threads->currentIndex() + 1);
appSettings->setShowExternalNonFatalErrors(m_fatalErrors->isChecked());
diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h
index 347529c3..434cd870 100644
--- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h
+++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h
@@ -38,10 +38,12 @@ private:
QComboBox* m_tabWidth;
QComboBox* m_colorSchemes;
- QLineEdit* m_scrollSpeed;
std::vector m_colorSchemePaths;
int m_oldColorSchemeIndex;
+ QLineEdit* m_scrollSpeed;
+ QCheckBox* m_loggingEnabled;
+
QComboBox* m_threads;
QCheckBox* m_fatalErrors;
diff --git a/src/trial/main.cpp b/src/trial/main.cpp
index 585bc36a..4827bbca 100644
--- a/src/trial/main.cpp
+++ b/src/trial/main.cpp
@@ -1,7 +1,4 @@
#include "utility/AppPath.h"
-#include "utility/logging/ConsoleLogger.h"
-#include "utility/logging/FileLogger.h"
-#include "utility/logging/LogManager.h"
#include "utility/ResourcePaths.h"
#include "utility/ScopedFunctor.h"
#include "utility/UserPaths.h"
@@ -16,18 +13,6 @@
#include "qt/window/QtMainWindow.h"
#include "version.h"
-void init()
-{
- std::shared_ptr consoleLogger = std::make_shared();
- consoleLogger->setLogLevel(Logger::LOG_WARNINGS | Logger::LOG_ERRORS);
- LogManager::getInstance()->addLogger(consoleLogger);
-
- std::shared_ptr fileLogger = std::make_shared();
- fileLogger->setLogLevel(Logger::LOG_ALL);
- FileLogger::setFilePath(UserPaths::getLogPath());
- LogManager::getInstance()->addLogger(fileLogger);
-}
-
int main(int argc, char *argv[])
{
QApplication::setApplicationName("Coati Trial");
@@ -45,20 +30,19 @@ int main(int argc, char *argv[])
QtApplication qtApp(argc, argv);
setupApp(argc, argv);
- init();
qtApp.setAttribute(Qt::AA_UseHighDpiPixmaps);
QtViewFactory viewFactory;
QtNetworkFactory networkFactory;
- utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".otf");
- utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".ttf");
-
Application::createInstance(version, &viewFactory, &networkFactory);
ScopedFunctor f([](){
Application::destroyInstance();
});
+ utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".otf");
+ utility::loadFontsFromDirectory(ResourcePaths::getFontsPath(), ".ttf");
+
return qtApp.exec();
}