From 5af8d0f03f8cdbee054c8c1b6b2305137025d6e7 Mon Sep 17 00:00:00 2001 From: Manuel Dobusch Date: Wed, 30 Dec 2015 00:21:38 +0100 Subject: [PATCH] ui: graph toggle button number position Improved the position of the small number in the graph node toggle button for windows. --- bin/app/data/gui/icon/coati.ico | Bin 74802 -> 72168 bytes bin/test/data/log/test_log.txt | 186 ++++++++++++++ .../CoatiSetup/CoatiSetup/CoatiSetup.vdproj | 236 +++++++----------- src/lib/CMakeLists.txt | 1 + .../controller/FeatureController.cpp | 25 ++ .../component/controller/FeatureController.h | 3 + .../utility/messaging/type/MessageResetZoom.h | 20 ++ .../graphElements/QtGraphNodeExpandToggle.cpp | 17 +- src/lib_gui/qt/window/QtMainWindow.cpp | 40 ++- src/lib_gui/qt/window/QtMainWindow.h | 12 + 10 files changed, 381 insertions(+), 159 deletions(-) create mode 100644 src/lib/utility/messaging/type/MessageResetZoom.h diff --git a/bin/app/data/gui/icon/coati.ico b/bin/app/data/gui/icon/coati.ico index 90ce2937aa6fad8c40be8b3404dd65b9ff01b5ce..afd304d8ad249240c88222090f17a74605d7c645 100644 GIT binary patch literal 72168 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 t^%vII+#ff@5ajsWPsYblBoJkr~C< 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 J>i6cs{{vN$v(f+n literal 74802 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 E14Euj)&Kwi diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index 5d8deac4..6fa47543 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -1,177 +1,350 @@ +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. 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 @@ -183,7 +356,20 @@ Edge.cpp ERROR: Edge type_of can't go from Node undefined to Node undefined Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined Edge.cpp ERROR: Edge use can't go from Node undefined to Node undefined Settings.cpp WARNING: File for Settings not found: data/SettingsTestSuite/wrong_settings.xml +ConfigManager.cpp WARNING: value Bool is not present in config. +ConfigManager.cpp WARNING: value Int is not present in config. +ConfigManager.cpp WARNING: value Float is not present in config. +ConfigManager.cpp WARNING: value String is not present in config. Settings.cpp WARNING: File for Settings not found: data/SettingsTestSuite/wrong_settings.xml +ConfigManager.cpp WARNING: value Bool is not present in config. +ConfigManager.cpp WARNING: value Int is not present in config. +ConfigManager.cpp WARNING: value Float is not present in config. +ConfigManager.cpp WARNING: value String is not present in config. +ConfigManager.cpp WARNING: value Bool is not present in config. +ConfigManager.cpp WARNING: value Int is not present in config. +ConfigManager.cpp WARNING: value Float is not present in config. +ConfigManager.cpp WARNING: value String is not present in config. +ConfigManager.cpp WARNING: value NewBool is not present in config. Storage.cpp INFO: file: file.cpp < 0:0 0:0> TextAccess.cpp ERROR: Could not open file file.cpp Storage.cpp INFO: typedef: type -> int diff --git a/deployment/windows/CoatiSetup/CoatiSetup/CoatiSetup.vdproj b/deployment/windows/CoatiSetup/CoatiSetup/CoatiSetup.vdproj index ec229aa2..7a8d795d 100644 --- a/deployment/windows/CoatiSetup/CoatiSetup/CoatiSetup.vdproj +++ b/deployment/windows/CoatiSetup/CoatiSetup/CoatiSetup.vdproj @@ -39,6 +39,12 @@ } "Entry" { + "MsmKey" = "8:_0BD1A36560F540F2AFAC7B3A755E3124" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_0C6F8E3E9815483DB9B9525A5CB12BC7" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -135,12 +141,6 @@ } "Entry" { - "MsmKey" = "8:_351F2705D87E4A5AB62BC138ECC736E7" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_357C43F6138D4C2D89C5305E7A239970" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -231,6 +231,12 @@ } "Entry" { + "MsmKey" = "8:_555B5450A99E4439956DCFD12930DFBF" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_5789409592134E888A27F1B86B9E4232" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -333,12 +339,6 @@ } "Entry" { - "MsmKey" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_75DEFB04EB20414488CA26910F7B814D" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -513,12 +513,6 @@ } "Entry" { - "MsmKey" = "8:_C12AAE9E2B354DCD87180B81C0515512" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_C16E8A2CCAC741908C60E95C5D0E4866" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -646,12 +640,6 @@ "Entry" { "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_UNDEFINED" "OwnerKey" = "8:_FB29EAD658C3497D9AC46ADE92D33C83" "MsmSig" = "8:_UNDEFINED" } @@ -753,20 +741,6 @@ { "CustomAction" { - "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_0B7392AFE5E4499F88AAA0B860A56C0A" - { - "Name" = "8:Primary output from SetupCreateStartMenuShortcutLib (Active)" - "Condition" = "8:" - "Object" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" - "FileType" = "3:1" - "InstallAction" = "3:1" - "Arguments" = "8:" - "EntryPoint" = "8:" - "Sequence" = "3:3" - "Identifier" = "8:_4122E44E_006C_4364_83D1_B71E2CE35502" - "InstallerClass" = "11:TRUE" - "CustomActionData" = "8:" - } "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_1C7BFD7F75904F828709F1BD762F4C7B" { "Name" = "8:Primary output from SetupRemoveCacheFiles (Active)" @@ -809,20 +783,6 @@ "InstallerClass" = "11:TRUE" "CustomActionData" = "8:" } - "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_400E522BB88046CDBAD0E16CCA411908" - { - "Name" = "8:Primary output from SetupCreateStartMenuShortcutLib (Active)" - "Condition" = "8:" - "Object" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" - "FileType" = "3:1" - "InstallAction" = "3:2" - "Arguments" = "8:" - "EntryPoint" = "8:" - "Sequence" = "3:3" - "Identifier" = "8:_D66DBD31_D6EF_42EA_8EF8_7E54FA970E9C" - "InstallerClass" = "11:TRUE" - "CustomActionData" = "8:" - } "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_463FBB946E6F4CF290A4B7E51ED398E5" { "Name" = "8:Primary output from SetupCreateDesktopShortcutLib (Active)" @@ -865,20 +825,6 @@ "InstallerClass" = "11:TRUE" "CustomActionData" = "8:" } - "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_941C3D250E4842B5AAE31BB5DCFC62A5" - { - "Name" = "8:Primary output from SetupCreateStartMenuShortcutLib (Active)" - "Condition" = "8:" - "Object" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" - "FileType" = "3:1" - "InstallAction" = "3:3" - "Arguments" = "8:" - "EntryPoint" = "8:" - "Sequence" = "3:4" - "Identifier" = "8:_E705159B_3909_494B_8A0D_CB88823DB4D6" - "InstallerClass" = "11:TRUE" - "CustomActionData" = "8:" - } "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_B1A592F73CCB404297211C5D3D86AB5F" { "Name" = "8:Primary output from SetupApplicationSettingsLib (Active)" @@ -907,20 +853,6 @@ "InstallerClass" = "11:TRUE" "CustomActionData" = "8:" } - "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_C5C129627560407AA9B5F55EB20F5621" - { - "Name" = "8:Primary output from SetupCreateStartMenuShortcutLib (Active)" - "Condition" = "8:" - "Object" = "8:_7564D8D0A4CC4B378B49F1DCBF78ACFB" - "FileType" = "3:1" - "InstallAction" = "3:4" - "Arguments" = "8:" - "EntryPoint" = "8:" - "Sequence" = "3:4" - "Identifier" = "8:_EEEA428E_A836_4773_8F9E_419A17879D01" - "InstallerClass" = "11:TRUE" - "CustomActionData" = "8:" - } "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_C8D0F5D371844855A3F74383818871DF" { "Name" = "8:Primary output from SetupApplicationSettingsLib (Active)" @@ -1052,6 +984,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0BD1A36560F540F2AFAC7B3A755E3124" + { + "SourcePath" = "8:..\\..\\..\\..\\bin\\app\\Coati.exe" + "TargetName" = "8:Coati.exe" + "Tag" = "8:" + "Folder" = "8:_972788CBF3404779967EA0B73B72BF18" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0C6F8E3E9815483DB9B9525A5CB12BC7" { "SourcePath" = "8:..\\..\\..\\..\\bin\\app\\Release\\Qt5Network.dll" @@ -1352,26 +1304,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_351F2705D87E4A5AB62BC138ECC736E7" - { - "SourcePath" = "8:..\\..\\..\\..\\bin\\app\\Release\\Coati.exe" - "TargetName" = "8:Coati.exe" - "Tag" = "8:" - "Folder" = "8:_972788CBF3404779967EA0B73B72BF18" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_357C43F6138D4C2D89C5305E7A239970" { "SourcePath" = "8:..\\..\\..\\..\\bin\\app\\data\\gui\\setting_window\\window.css" @@ -1672,6 +1604,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_555B5450A99E4439956DCFD12930DFBF" + { + "SourcePath" = "8:..\\..\\..\\..\\bin\\app\\data\\gui\\installer\\logo_1024_1024.png" + "TargetName" = "8:logo_1024_1024.png" + "Tag" = "8:" + "Folder" = "8:_E1DFE5A1D9EB4CF1B984E8D037C05C7C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5789409592134E888A27F1B86B9E4232" { "SourcePath" = "8:..\\..\\..\\..\\bin\\app\\data\\projects\\tutorial\\src\\graph_tutorial_4.h" @@ -2592,26 +2544,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C12AAE9E2B354DCD87180B81C0515512" - { - "SourcePath" = "8:..\\..\\..\\..\\bin\\app\\data\\gui\\installer\\logo_1024_1024.png" - "TargetName" = "8:logo_1024_1024.png" - "Tag" = "8:" - "Folder" = "8:_E1DFE5A1D9EB4CF1B984E8D037C05C7C" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C16E8A2CCAC741908C60E95C5D0E4866" { "SourcePath" = "8:..\\..\\..\\..\\bin\\app\\data\\color_schemes\\bright.xml" @@ -3327,7 +3259,7 @@ "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:Coati" "ProductCode" = "8:{2A3B2FF5-A114-4CAB-88FB-DE8942D5B8EB}" - "PackageCode" = "8:{0439DF0E-299D-4107-8052-74A99FBAA970}" + "PackageCode" = "8:{08D7C8AB-362B-4BBA-A1A3-992D5BBB3F0E}" "UpgradeCode" = "8:{CFF09D53-87AF-4241-960D-98C21ED9D358}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" @@ -3517,6 +3449,34 @@ } "Shortcut" { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_218124B75F404213855F638598E000A0" + { + "Name" = "8:Uninstall Coati" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_321D6469331341CC94DB61F825F7C38D" + "Folder" = "8:_9537058B4FC1411F8480A52A91F7AB5C" + "WorkingFolder" = "8:_A96454F2CE0E4C55B59EDE1094D40E56" + "Icon" = "8:" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_5EEE826460D748F98304CF1E4BAF5D35" + { + "Name" = "8:Coati" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_0BD1A36560F540F2AFAC7B3A755E3124" + "Folder" = "8:_9537058B4FC1411F8480A52A91F7AB5C" + "WorkingFolder" = "8:_972788CBF3404779967EA0B73B72BF18" + "Icon" = "8:_096D033F5DF740A6B6B190652E5276AF" + "Feature" = "8:" + } } "UserInterface" { @@ -4281,7 +4241,7 @@ { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3460FAB707F8431E87168499A7F51556" { - "SourcePath" = "8:..\\SetupApplicationSettingsLib\\obj\\Release\\SetupApplicationSettingsLib.dll" + "SourcePath" = "8:..\\SetupApplicationSettingsLib\\obj\\Debug\\SetupApplicationSettingsLib.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_A96454F2CE0E4C55B59EDE1094D40E56" @@ -4307,37 +4267,9 @@ { } } - "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_7564D8D0A4CC4B378B49F1DCBF78ACFB" - { - "SourcePath" = "8:..\\SetupCreateStartMenuShortcutLib\\obj\\Release\\SetupCreateStartMenuShortcutLib.dll" - "TargetName" = "8:" - "Tag" = "8:" - "Folder" = "8:_A96454F2CE0E4C55B59EDE1094D40E56" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - "ProjectOutputGroupRegister" = "3:1" - "OutputConfiguration" = "8:" - "OutputGroupCanonicalName" = "8:Built" - "OutputProjectGuid" = "8:{962F7DA5-AEA1-4D03-89FD-F9AC42C24E46}" - "ShowKeyOutput" = "11:TRUE" - "ExcludeFilters" - { - } - } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_F81B906E39E44A5DAC37B3D70BC8A8CE" { - "SourcePath" = "8:..\\SetupCreateDesktopShortcutLib\\obj\\Release\\SetupCreateDesktopShortcutLib.dll" + "SourcePath" = "8:..\\SetupCreateDesktopShortcutLib\\obj\\Debug\\SetupCreateDesktopShortcutLib.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_A96454F2CE0E4C55B59EDE1094D40E56" @@ -4365,7 +4297,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FB29EAD658C3497D9AC46ADE92D33C83" { - "SourcePath" = "8:..\\SetupRemoveCacheFiles\\obj\\Release\\SetupRemoveCacheFiles.dll" + "SourcePath" = "8:..\\SetupRemoveCacheFiles\\obj\\Debug\\SetupRemoveCacheFiles.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_A96454F2CE0E4C55B59EDE1094D40E56" diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index c10b69d5..ad21fe62 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -231,6 +231,7 @@ add_files( utility/messaging/type/MessageMoveIDECursor.h utility/messaging/type/MessageRedo.h utility/messaging/type/MessageRefresh.h + utility/messaging/type/MessageResetZoom.h utility/messaging/type/MessageSaveProject.h utility/messaging/type/MessageSearch.h utility/messaging/type/MessageSearchAutocomplete.h diff --git a/src/lib/component/controller/FeatureController.cpp b/src/lib/component/controller/FeatureController.cpp index 1f13f12b..f103e355 100644 --- a/src/lib/component/controller/FeatureController.cpp +++ b/src/lib/component/controller/FeatureController.cpp @@ -5,6 +5,7 @@ #include "utility/messaging/type/MessageActivateTokens.h" #include "utility/messaging/type/MessageRefresh.h" +#include "utility/messaging/type/MessageStatus.h" FeatureController::FeatureController(StorageAccess* storageAccess) : m_storageAccess(storageAccess) @@ -69,6 +70,21 @@ void FeatureController::handleMessage(MessageActivateTokenLocations* message) m.dispatchImmediately(); } +void FeatureController::handleMessage(MessageResetZoom* message) +{ + ApplicationSettings* settings = ApplicationSettings::getInstance().get(); + + if (settings->getFontSize() != 12) + { + settings->setFontSize(12); + settings->save(); + + MessageRefresh().refreshUiOnly().dispatch(); + } + + MessageStatus("Zoom: 100%").dispatch(); +} + void FeatureController::handleMessage(MessageSwitchColorScheme* message) { ApplicationSettings* settings = ApplicationSettings::getInstance().get(); @@ -84,6 +100,15 @@ void FeatureController::handleMessage(MessageZoom* message) settings->setFontSize(std::max(settings->getFontSize() + (message->zoomIn ? 1 : -1), 5)); settings->save(); + int fontSize = settings->getFontSize(); + int standardSize = 12; + + int zoom = (fontSize * 100) / standardSize; + + std::stringstream text; + text << "Zoom: " << zoom << "%"; + MessageStatus(text.str()).dispatch(); + MessageRefresh().refreshUiOnly().dispatch(); } diff --git a/src/lib/component/controller/FeatureController.h b/src/lib/component/controller/FeatureController.h index 40275254..e07024aa 100644 --- a/src/lib/component/controller/FeatureController.h +++ b/src/lib/component/controller/FeatureController.h @@ -11,6 +11,7 @@ #include "utility/messaging/type/MessageActivateFile.h" #include "utility/messaging/type/MessageActivateNodes.h" #include "utility/messaging/type/MessageActivateTokenLocations.h" +#include "utility/messaging/type/MessageResetZoom.h" #include "utility/messaging/type/MessageSearch.h" #include "utility/messaging/type/MessageSwitchColorScheme.h" #include "utility/messaging/type/MessageZoom.h" @@ -23,6 +24,7 @@ class FeatureController , public MessageListener , public MessageListener , public MessageListener + , public MessageListener , public MessageListener , public MessageListener , public MessageListener @@ -37,6 +39,7 @@ private: virtual void handleMessage(MessageActivateNodes* message); virtual void handleMessage(MessageSearch* message); virtual void handleMessage(MessageActivateTokenLocations* message); + virtual void handleMessage(MessageResetZoom* message); virtual void handleMessage(MessageSwitchColorScheme* message); virtual void handleMessage(MessageZoom* message); diff --git a/src/lib/utility/messaging/type/MessageResetZoom.h b/src/lib/utility/messaging/type/MessageResetZoom.h new file mode 100644 index 00000000..82ca829e --- /dev/null +++ b/src/lib/utility/messaging/type/MessageResetZoom.h @@ -0,0 +1,20 @@ +#ifndef MESSAGE_RESET_ZOOM_H +#define MESSAGE_RESET_ZOOM_H + +#include "utility/messaging/Message.h" + +class MessageResetZoom + : public Message +{ +public: + MessageResetZoom() + { + } + + static const std::string getStaticType() + { + return "MessageResetZoom"; + } +}; + +#endif // MESSAGE_RESET_ZOOM_H \ No newline at end of file diff --git a/src/lib_gui/qt/view/graphElements/QtGraphNodeExpandToggle.cpp b/src/lib_gui/qt/view/graphElements/QtGraphNodeExpandToggle.cpp index 85ccb5fc..2d697424 100644 --- a/src/lib_gui/qt/view/graphElements/QtGraphNodeExpandToggle.cpp +++ b/src/lib_gui/qt/view/graphElements/QtGraphNodeExpandToggle.cpp @@ -10,6 +10,8 @@ #include "qt/utility/utilityQt.h" #include "qt/view/graphElements/QtGraphNodeData.h" +#include + QtGraphNodeExpandToggle::QtGraphNodeExpandToggle(bool expanded, int invisibleSubNodeCount) : m_invisibleSubNodeCount(invisibleSubNodeCount) , m_expanded(expanded) @@ -63,10 +65,17 @@ void QtGraphNodeExpandToggle::updateStyle() GraphViewStyle::NodeStyle style = GraphViewStyle::getStyleOfExpandToggleNode(); setStyle(style); - m_text->setPos( - (m_rect->rect().width() - QFontMetrics(m_text->font()).width(m_text->text())) / 2, - 6 - ); + float textX = (m_rect->rect().width() / 2) - (QFontMetrics(m_text->font()).width(m_text->text()) / 2); + float textY = m_rect->rect().height() / 2 - QFontMetrics(m_text->font()).height() / 1.8f; + + // move the text to the nearest integer x pos, instead of the next lower int pos + // improves results on windows systems + if (textX - (float)((int)textX) >= 0.5f) + { + textX += 0.5f; + } + + m_text->setPos(textX, textY); m_icon->setPos( (m_rect->rect().width() - m_icon->pixmap().width() / QtDeviceScaledPixmap::devicePixelRatio()) / 2, diff --git a/src/lib_gui/qt/window/QtMainWindow.cpp b/src/lib_gui/qt/window/QtMainWindow.cpp index 1d1a2f89..d810e74b 100644 --- a/src/lib_gui/qt/window/QtMainWindow.cpp +++ b/src/lib_gui/qt/window/QtMainWindow.cpp @@ -20,6 +20,7 @@ #include "utility/messaging/type/MessageLoadProject.h" #include "utility/messaging/type/MessageRedo.h" #include "utility/messaging/type/MessageRefresh.h" +#include "utility/messaging/type/MessageResetZoom.h" #include "utility/messaging/type/MessageSaveProject.h" #include "utility/messaging/type/MessageSwitchColorScheme.h" #include "utility/messaging/type/MessageUndo.h" @@ -52,9 +53,6 @@ MouseReleaseFilter::MouseReleaseFilter(QObject* parent) { m_backButton = ApplicationSettings::getInstance()->getControlsMouseBackButton(); m_forwardButton = ApplicationSettings::getInstance()->getControlsMouseForwardButton(); - - std::cout << m_backButton << std::endl; - std::cout << m_forwardButton << std::endl; } bool MouseReleaseFilter::eventFilter(QObject* obj, QEvent* event) @@ -63,6 +61,8 @@ bool MouseReleaseFilter::eventFilter(QObject* obj, QEvent* event) { QMouseEvent* mouseEvent = dynamic_cast(event); + + if (mouseEvent->button() == m_backButton) { MessageUndo().dispatch(); @@ -78,6 +78,33 @@ bool MouseReleaseFilter::eventFilter(QObject* obj, QEvent* event) return QObject::eventFilter(obj, event); } +MouseWheelFilter::MouseWheelFilter(QObject* parent) + : QObject(parent) +{ + +} + +bool MouseWheelFilter::eventFilter(QObject* obj, QEvent* event) +{ + if (event->type() == QEvent::Wheel && QApplication::keyboardModifiers() == Qt::ControlModifier) + { + QWheelEvent* wheelEvent = dynamic_cast(event); + + if (wheelEvent->delta() > 0.0f) + { + MessageZoom(true).dispatch(); + return true; + } + else if (wheelEvent->delta() < 0.0f) + { + MessageZoom(false).dispatch(); + return true; + } + } + + return QObject::eventFilter(obj, event); +} + QtMainWindow::QtMainWindow() : m_showDockWidgetTitleBars(true) { @@ -92,6 +119,7 @@ QtMainWindow::QtMainWindow() QApplication* app = dynamic_cast(QCoreApplication::instance()); app->installEventFilter(new MouseReleaseFilter(this)); + app->installEventFilter(new MouseWheelFilter(this)); app->setStyleSheet(utility::getStyleSheet("data/gui/tooltip.css").c_str()); @@ -427,6 +455,11 @@ void QtMainWindow::zoomOut() MessageZoom(false).dispatch(); } +void QtMainWindow::resetZoom() +{ + MessageResetZoom().dispatch(); +} + void QtMainWindow::switchColorScheme() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "./data/color_schemes", "XML Files (*.xml)"); @@ -576,6 +609,7 @@ void QtMainWindow::setupViewMenu() menu->addAction(tr("Larger font"), this, SLOT(zoomIn()), QKeySequence::ZoomIn); menu->addAction(tr("Smaller font"), this, SLOT(zoomOut()), QKeySequence::ZoomOut); + menu->addAction(tr("Reset font size"), this, SLOT(resetZoom())); menu->addAction(tr("Switch Color Scheme..."), this, SLOT(switchColorScheme())); diff --git a/src/lib_gui/qt/window/QtMainWindow.h b/src/lib_gui/qt/window/QtMainWindow.h index 7e8fdf41..18ecc3a1 100644 --- a/src/lib_gui/qt/window/QtMainWindow.h +++ b/src/lib_gui/qt/window/QtMainWindow.h @@ -50,6 +50,17 @@ private: size_t m_forwardButton; }; +class MouseWheelFilter + : public QObject +{ + Q_OBJECT + +public: + MouseWheelFilter(QObject* parent); + +protected: + bool eventFilter(QObject* obj, QEvent* event); +}; class QtMainWindow : public QMainWindow @@ -103,6 +114,7 @@ public slots: void redo(); void zoomIn(); void zoomOut(); + void resetZoom(); void switchColorScheme(); void toggleView(View* view, bool fromMenu);