diff --git a/bin/app/data/ApplicationSettings_template.xml b/bin/app/data/ApplicationSettings_template.xml index 63fadbee..4926a354 100644 --- a/bin/app/data/ApplicationSettings_template.xml +++ b/bin/app/data/ApplicationSettings_template.xml @@ -46,4 +46,9 @@ + + + + + diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index ef77bdfd..bfd0605e 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -1,4 +1,320 @@ ConfigManager.cpp WARNING: value path/to/nowhere is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +ConfigManager.cpp WARNING: value source/header_search_paths/header_search_path is not present in config. Token.cpp ERROR: Location Id was not referenced by this Token. Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined Node.cpp WARNING: Cannot change NodeType after it was already set from namespace to class diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.v11.suo b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.v11.suo index c98ce602..020115d7 100644 Binary files a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.v11.suo and b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin.v11.suo differ diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj index 1826fd51..70995393 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPlugin.csproj @@ -14,7 +14,7 @@ {82b43b9b-a64c-4715-b499-d71e9ca2bd60};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Library Properties - SnowForest.CoatiPlugin + CoatiSoftware.CoatiPlugin CoatiPlugin True Key.snk @@ -127,7 +127,9 @@ Resources.resx - + + Component + diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPluginPackage.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPluginPackage.cs index ae987e2e..8a58923e 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPluginPackage.cs +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/CoatiPluginPackage.cs @@ -2,6 +2,7 @@ using System.Diagnostics; using System.Globalization; using System.Runtime.InteropServices; +using System.ComponentModel; using System.ComponentModel.Design; using Microsoft.Win32; using Microsoft.VisualStudio; @@ -17,16 +18,81 @@ using System.Threading; using EnvDTE; using EnvDTE80; -namespace SnowForest.CoatiPlugin +namespace CoatiSoftware.CoatiPlugin { + public class OptionPageGrid : DialogPage + { + private uint _serverPort = 6666; + private uint _clientPort = 6667; + + public delegate void Callback(); + public static Callback _serverPortChangeCallback = null; + public static Callback _clientPortChangeCallback = null; + + [Category("Coati")] + [DisplayName("VS Port")] + [Description("The port on which Visual Studio will receive messages")] + public uint ServerPort + { + get { return _serverPort; } + set + { + _serverPort = value; + if (_serverPortChangeCallback != null) + { + _serverPortChangeCallback(); + } + } + } + + [Category("Coati")] + [DisplayName("Coati Port")] + [Description("The port on which Coati will receive messages")] + public uint ClientPort + { + get { return _clientPort; } + set + { + _clientPort = value; + if (_clientPortChangeCallback != null) + { + _clientPortChangeCallback(); + } + } + } + + public OptionPageGrid() + { + } + } + [PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] [ProvideMenuResource("Menus.ctmenu", 1)] [Guid(GuidList.guidCoatiPluginPkgString)] [ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids80.NoSolution)] + [ProvideOptionPage(typeof(OptionPageGrid), "Coati", "Coati Settings", 0, 0, true)] public sealed class CoatiPluginPackage : Package { + public uint ServerPort + { + get + { + OptionPageGrid page = (OptionPageGrid)GetDialogPage(typeof(OptionPageGrid)); + return page.ServerPort; + } + } + + public uint ClientPort + { + get + { + OptionPageGrid page = (OptionPageGrid)GetDialogPage(typeof(OptionPageGrid)); + return page.ClientPort; + } + } + System.Threading.Thread _serverThread = null; public CoatiPluginPackage() @@ -36,16 +102,13 @@ namespace SnowForest.CoatiPlugin { base.Initialize(); - AsynchronousSocketListener server = new AsynchronousSocketListener(); - AsynchronousSocketListener._onReadCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkReadCallback); - AsynchronousSocketListener._onErrorCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkErrorCallback); - _serverThread = new System.Threading.Thread(server.DoWork); - _serverThread.Start(); - - AsynchronousClient._onErrorCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkErrorCallback); + InitNetwork(); FileUtility._errorCallback = new FileUtility.ErrorCallback(OnFileUtilityError); + OptionPageGrid._serverPortChangeCallback = new OptionPageGrid.Callback(OnServerPortChanged); + OptionPageGrid._clientPortChangeCallback = new OptionPageGrid.Callback(OnClientPortChanged); + OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService; if ( null != mcs ) { @@ -55,6 +118,19 @@ namespace SnowForest.CoatiPlugin } } + private void InitNetwork() + { + AsynchronousSocketListener._port = ServerPort; + AsynchronousSocketListener server = new AsynchronousSocketListener(); + AsynchronousSocketListener._onReadCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkReadCallback); + AsynchronousSocketListener._onErrorCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkErrorCallback); + _serverThread = new System.Threading.Thread(server.DoWork); + _serverThread.Start(); + + AsynchronousClient._port = ClientPort; + AsynchronousClient._onErrorCallback = new AsynchronousSocketListener.OnReadCallback(OnNetworkErrorCallback); + } + private void MenuItemCallback(object sender, EventArgs e) { MenuCommand menuCommand = sender as MenuCommand; @@ -65,6 +141,8 @@ namespace SnowForest.CoatiPlugin { if (menuCommand.CommandID.ID == (int)PkgCmdIDList.cmdidCoatiSetActiveToken) { + DisplayMessage("Coati", "" + ServerPort.ToString()); + string fileName = FileUtility.GetActiveDocumentName(dte); string filePath = FileUtility.GetActiveDocumentPath(dte); @@ -104,6 +182,21 @@ namespace SnowForest.CoatiPlugin DisplayMessage("Coati File Error", message); } + private void OnServerPortChanged() + { + AsynchronousSocketListener._port = ServerPort; + + _serverThread.Abort(); + AsynchronousSocketListener server = new AsynchronousSocketListener(); + _serverThread = new System.Threading.Thread(server.DoWork); + _serverThread.Start(); + } + + private void OnClientPortChanged() + { + AsynchronousClient._port = ClientPort; + } + private void DisplayMessage(string title, string message) { IVsUIShell uiShell = (IVsUIShell)GetService(typeof(SVsUIShell)); diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/FileUtility.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/FileUtility.cs index d7735d65..959c6a24 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/FileUtility.cs +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/FileUtility.cs @@ -5,7 +5,7 @@ using System.Text; using System.Threading.Tasks; using EnvDTE; -namespace SnowForest.CoatiPlugin +namespace CoatiSoftware.CoatiPlugin { class FileUtility { diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Guids.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Guids.cs index 0ab44894..d9f324b1 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Guids.cs +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Guids.cs @@ -2,7 +2,7 @@ // MUST match guids.h using System; -namespace SnowForest.CoatiPlugin +namespace CoatiSoftware.CoatiPlugin { static class GuidList { diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkProtocolUtility.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkProtocolUtility.cs index 97fcd656..1fcde6fd 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkProtocolUtility.cs +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkProtocolUtility.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace SnowForest.CoatiPlugin +namespace CoatiSoftware.CoatiPlugin { class NetworkProtocolUtility { diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkUtility.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkUtility.cs index 965bfaf8..af31b1d7 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkUtility.cs +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/NetworkUtility.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; using System.Net.Sockets; using System.Net; -namespace SnowForest.CoatiPlugin +namespace CoatiSoftware.CoatiPlugin { public class StateObject { @@ -28,6 +28,8 @@ namespace SnowForest.CoatiPlugin public static OnReadCallback _onErrorCallback = null; private static string _endOfMessageToken = ""; + + public static uint _port = 6666; public AsynchronousSocketListener() { @@ -40,13 +42,12 @@ namespace SnowForest.CoatiPlugin public static void StartListening() { - const int port = 6666; const string ipAddressString = "127.0.0.1"; byte[] bytes = new Byte[1024]; IPAddress ipAddress = IPAddress.Parse(ipAddressString); - IPEndPoint localEndPoint = new IPEndPoint(ipAddress, port); + IPEndPoint localEndPoint = new IPEndPoint(ipAddress, (int)_port); Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -139,7 +140,7 @@ namespace SnowForest.CoatiPlugin public class AsynchronousClient { - private const int _port = 6667; + public static uint _port = 6667; private static ManualResetEvent connectDone = new ManualResetEvent(false); private static ManualResetEvent sendDone = new ManualResetEvent(false); @@ -151,7 +152,7 @@ namespace SnowForest.CoatiPlugin public static void Send(string message) { IPAddress ipAddress = IPAddress.Parse("127.0.0.1"); - IPEndPoint remoteEP = new IPEndPoint(ipAddress, _port); + IPEndPoint remoteEP = new IPEndPoint(ipAddress, (int)_port); Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/PkgCmdID.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/PkgCmdID.cs index be6bc196..e699320d 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/PkgCmdID.cs +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/PkgCmdID.cs @@ -2,7 +2,7 @@ // MUST match PkgCmdID.h using System; -namespace SnowForest.CoatiPlugin +namespace CoatiSoftware.CoatiPlugin { static class PkgCmdIDList { diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.Designer.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.Designer.cs index 15676794..ee0b9f30 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.Designer.cs +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace SnowForest.CoatiPlugin { +namespace CoatiSoftware.CoatiPlugin { using System; @@ -39,7 +39,7 @@ namespace SnowForest.CoatiPlugin { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SnowForest.CoatiPlugin.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CoatiSoftware.CoatiPlugin.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/SystemUtility.cs b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/SystemUtility.cs new file mode 100644 index 00000000..dbe27e27 --- /dev/null +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/SystemUtility.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CoatiSoftware.CoatiPlugin +{ + class SystemUtility + { + [System.Runtime.InteropServices.DllImport("user32.dll")] + static extern bool SetForegroundWindow(IntPtr hWnd); + [System.Runtime.InteropServices.DllImport("user32.dll")] + static extern IntPtr SetActiveWindow(IntPtr hWnd); + + public static void GetWindowFocus() + { + System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess(); + IntPtr windowHandle = process.MainWindowHandle; + + if (windowHandle != null) + { + SetForegroundWindow(windowHandle); + SetActiveWindow(windowHandle); + } + } + } +} diff --git a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/source.extension.vsixmanifest b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/source.extension.vsixmanifest index 7403e635..16fb6bea 100644 --- a/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/source.extension.vsixmanifest +++ b/ide_plugins/vs/vs2012/CoatiPlugin/CoatiPlugin/source.extension.vsixmanifest @@ -1,7 +1,7 @@  - + CoatiPlugin This package allows Coati to communicate with Visual Studio and vice versa. coati.ico diff --git a/setup/dynamic_libraries/windows/app/Debug/platforms/qwindowsd.dll b/setup/dynamic_libraries/windows/app/Debug/platforms/qwindowsd.dll new file mode 100644 index 00000000..c2ebc2fa Binary files /dev/null and b/setup/dynamic_libraries/windows/app/Debug/platforms/qwindowsd.dll differ diff --git a/src/app/qt/network/QtIDECommunicationController.cpp b/src/app/qt/network/QtIDECommunicationController.cpp index 82d1be53..e379b5bc 100644 --- a/src/app/qt/network/QtIDECommunicationController.cpp +++ b/src/app/qt/network/QtIDECommunicationController.cpp @@ -6,7 +6,12 @@ QtIDECommunicationController::QtIDECommunicationController(QObject* parent, Stor : IDECommunicationController(storageAccess) , m_tcpWrapper(parent) { + ApplicationSettings* appSettings = ApplicationSettings::getInstance().get(); + m_tcpWrapper.setReadCallback(std::bind(&QtIDECommunicationController::handleIncomingMessage, this, std::placeholders::_1)); + m_tcpWrapper.setServerPort(appSettings->getCoatiPort()); + m_tcpWrapper.setClientPort(appSettings->getPluginPort()); + m_tcpWrapper.startListening(); } QtIDECommunicationController::~QtIDECommunicationController() diff --git a/src/app/qt/network/QtIDECommunicationController.h b/src/app/qt/network/QtIDECommunicationController.h index 93a030a5..7f386c4c 100644 --- a/src/app/qt/network/QtIDECommunicationController.h +++ b/src/app/qt/network/QtIDECommunicationController.h @@ -6,6 +6,7 @@ #include "QtTcpWrapper.h" #include "component/controller/IDECommunicationController.h" +#include "settings/ApplicationSettings.h" class StorageAccess; diff --git a/src/app/qt/network/QtTcpWrapper.cpp b/src/app/qt/network/QtTcpWrapper.cpp index a173c1a1..8f7da3f3 100644 --- a/src/app/qt/network/QtTcpWrapper.cpp +++ b/src/app/qt/network/QtTcpWrapper.cpp @@ -2,10 +2,15 @@ #include "utility/logging/logging.h" -QtTcpWrapper::QtTcpWrapper(QObject* parent, const std::string& ip, const quint16 port) +QtTcpWrapper::QtTcpWrapper(QObject* parent, const std::string& ip, const quint16 serverPort, const quint16 clientPort) : QObject(parent) - , m_port(port) + , m_serverPort(serverPort) + , m_clientPort(clientPort) , m_ip(ip) +{ +} + +void QtTcpWrapper::startListening() { QHostAddress address(m_ip.c_str()); @@ -13,7 +18,7 @@ QtTcpWrapper::QtTcpWrapper(QObject* parent, const std::string& ip, const quint16 connect(m_tcpServer, SIGNAL(newConnection()), this, SLOT(acceptConnection())); - if (!m_tcpServer->listen(QHostAddress::LocalHost, m_port)) + if (!m_tcpServer->listen(QHostAddress::LocalHost, m_serverPort)) { LOG_ERROR_STREAM(<< "TCP server failed to start with error: \"" + m_tcpServer->errorString().toStdString() + "\". Unable to listen for IDE plugin messages."); } @@ -54,6 +59,26 @@ void QtTcpWrapper::setReadCallback(const std::function m_readCallback = callback; } +quint16 QtTcpWrapper::getServerPort() const +{ + return m_serverPort; +} + +void QtTcpWrapper::setServerPort(const quint16 serverPort) +{ + m_serverPort = serverPort; +} + +quint16 QtTcpWrapper::getClientPort() const +{ + return m_clientPort; +} + +void QtTcpWrapper::setClientPort(const quint16 clientPort) +{ + m_clientPort = clientPort; +} + void QtTcpWrapper::acceptConnection() { m_tcpClient = m_tcpServer->nextPendingConnection(); diff --git a/src/app/qt/network/QtTcpWrapper.h b/src/app/qt/network/QtTcpWrapper.h index 55d70ce6..755a9984 100644 --- a/src/app/qt/network/QtTcpWrapper.h +++ b/src/app/qt/network/QtTcpWrapper.h @@ -13,13 +13,21 @@ class QtTcpWrapper : public QObject Q_OBJECT public: - QtTcpWrapper(QObject* parent, const std::string& ip = "127.0.0.1", const quint16 port = 6667); + QtTcpWrapper(QObject* parent, const std::string& ip = "127.0.0.1", const quint16 serverPort = 6667, const quint16 clientPort = 6666); ~QtTcpWrapper(); + void startListening(); + void sendMessage(const std::string& message) const; void setReadCallback(const std::function& callback); + quint16 getServerPort() const; + void setServerPort(const quint16 serverPort); + + quint16 getClientPort() const; + void setClientPort(const quint16 clientPort); + signals: public slots: @@ -27,7 +35,8 @@ public slots: void startRead(); private: - quint16 m_port; + quint16 m_serverPort; + quint16 m_clientPort; std::string m_ip; std::function m_readCallback; diff --git a/src/lib/settings/ApplicationSettings.cpp b/src/lib/settings/ApplicationSettings.cpp index ef8d3672..d98e33ce 100644 --- a/src/lib/settings/ApplicationSettings.cpp +++ b/src/lib/settings/ApplicationSettings.cpp @@ -115,6 +115,7 @@ std::vector ApplicationSettings::getRecentProjects() const { std::vector recentProjects; std::vector loadedRecentProjects = getPathValues("user/recent_projects/recent_project"); + for (FilePath project: loadedRecentProjects) { if (project.exists()) @@ -139,3 +140,23 @@ void ApplicationSettings::setUserHasSeenSettings(bool hasSeenSettings) { setValue("user/has_seen_settings", hasSeenSettings); } + +int ApplicationSettings::getPluginPort() const +{ + return getValue("network/plugin_port", 6666); +} + +void ApplicationSettings::setPluginPort(const int pluginPort) +{ + setValue("network/plugin_port", pluginPort); +} + +int ApplicationSettings::getCoatiPort() const +{ + return getValue("network/coati_port", 6667); +} + +void ApplicationSettings::setCoatiPort(const int coatiPort) +{ + setValue("network/coati_port", coatiPort); +} \ No newline at end of file diff --git a/src/lib/settings/ApplicationSettings.h b/src/lib/settings/ApplicationSettings.h index 1835b106..a4dbe1c6 100644 --- a/src/lib/settings/ApplicationSettings.h +++ b/src/lib/settings/ApplicationSettings.h @@ -55,6 +55,13 @@ public: std::vector getRecentProjects() const; bool setRecentProjects(const std::vector& recentProjects); + // network + int getPluginPort() const; + void setPluginPort(const int pluginPort); + + int getCoatiPort() const; + void setCoatiPort(const int coatiPort); + private: ApplicationSettings(); ApplicationSettings(const ApplicationSettings&);