diff --git a/CMakeLists.txt b/CMakeLists.txt index 02381a05a3..33ee308157 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,9 +28,9 @@ project(OpenSpace) message(STATUS "Generating OpenSpace project") set(OPENSPACE_VERSION_MAJOR 0) -set(OPENSPACE_VERSION_MINOR 10) +set(OPENSPACE_VERSION_MINOR 11) set(OPENSPACE_VERSION_PATCH 0) -set(OPENSPACE_VERSION_STRING "prerelease-15 (ASTC)") +set(OPENSPACE_VERSION_STRING "prerelease-16 (Beta) RC2") set(OPENSPACE_BASE_DIR "${PROJECT_SOURCE_DIR}") set(OPENSPACE_APPS_DIR "${OPENSPACE_BASE_DIR}/apps") diff --git a/data/scene/newhorizons.scene b/data/scene/newhorizons.scene index 1fa63a8573..34c5545542 100644 --- a/data/scene/newhorizons.scene +++ b/data/scene/newhorizons.scene @@ -194,6 +194,9 @@ function postInitialization() openspace.mark_interesting_nodes({ "Pluto", "NewHorizons", "Charon" }) + + openspace.printInfo("Receiving four errors about SCLK_DATA_TYPE_98 are expected.") + end return { diff --git a/data/scene/stars/digitaluniverse/digitaluniverse.data b/data/scene/stars/digitaluniverse/digitaluniverse.data index f5379331c4..e1ea7be746 100644 --- a/data/scene/stars/digitaluniverse/digitaluniverse.data +++ b/data/scene/stars/digitaluniverse/digitaluniverse.data @@ -1,7 +1,7 @@ return { FileRequest = { { Identifier = "stars_textures", Destination = "textures", Version = 1 }, - { Identifier = "stars_du", Destination = "speck", Version = 2 }, + { Identifier = "stars_du", Destination = "speck", Version = 1 }, { Identifier = "stars_colormap", Destination = ".", Version = 1 }, }, } \ No newline at end of file diff --git a/modules/imgui/include/guicomponent.h b/modules/imgui/include/guicomponent.h index 9d6e16a998..af94b3815d 100644 --- a/modules/imgui/include/guicomponent.h +++ b/modules/imgui/include/guicomponent.h @@ -69,12 +69,18 @@ public: /// Renders the individual subcomponents to the screen virtual void render() = 0; + void setShowHelpTooltip(bool showHelpTooltip); + void setShowHelpTooltipDelay(double delay); + protected: /// true if this component is enabled and visible on the screen properties::BoolProperty _isEnabled; /// if true this window is currently collapsed. This setting mirrors the /// ImGui internal state of the window properties::BoolProperty _isCollapsed; + + bool _showHelpTooltip; + double _tooltipDelay; }; } // namespace openspace::gui diff --git a/modules/imgui/include/guipropertycomponent.h b/modules/imgui/include/guipropertycomponent.h index 194850a723..9fe45049cd 100644 --- a/modules/imgui/include/guipropertycomponent.h +++ b/modules/imgui/include/guipropertycomponent.h @@ -59,8 +59,6 @@ public: void setVisibility(properties::Property::Visibility visibility); void setHasRegularProperties(bool hasOnlyRegularProperties); - void setShowHelpTooltip(bool showHelpTooltip); - void setShowHelpTooltipDelay(double delay); void render() override; @@ -78,9 +76,6 @@ protected: properties::BoolProperty _useTreeLayout; properties::StringListProperty _treeOrdering; - - bool _showHelpTooltip; - double _tooltipDelay; }; } // namespace openspace::gui diff --git a/modules/imgui/src/gui.cpp b/modules/imgui/src/gui.cpp index c26f1c35ea..da648ae7d4 100644 --- a/modules/imgui/src/gui.cpp +++ b/modules/imgui/src/gui.cpp @@ -313,10 +313,23 @@ GUI::GUI() { auto showHelpTextFunc = [this](){ + _help.setShowHelpTooltip(_showHelpText); + _filePath.setShowHelpTooltip(_showHelpText); +#ifdef GLOBEBROWSING_USE_GDAL + _globeBrowsing.setShowHelpTooltip(_showHelpText); +#endif // GLOBEBROWSING_USE_GDAL + _performance.setShowHelpTooltip(_showHelpText); _globalProperty.setShowHelpTooltip(_showHelpText); _property.setShowHelpTooltip(_showHelpText); _screenSpaceProperty.setShowHelpTooltip(_showHelpText); _virtualProperty.setShowHelpTooltip(_showHelpText); + _spaceTime.setShowHelpTooltip(_showHelpText); + _mission.setShowHelpTooltip(_showHelpText); +#ifdef OPENSPACE_MODULE_ISWA_ENABLED + _iswa.setShowHelpTooltip(_showHelpText); +#endif // OPENSPACE_MODULE_ISWA_ENABLED + _parallel.setShowHelpTooltip(_showHelpText); + _featuredProperties.setShowHelpTooltip(_showHelpText); }; showHelpTextFunc(); _showHelpText.onChange(std::move(showHelpTextFunc)); @@ -325,10 +338,23 @@ GUI::GUI() { auto helpTextDelayFunc = [this](){ + _help.setShowHelpTooltipDelay(_helpTextDelay); + _filePath.setShowHelpTooltipDelay(_helpTextDelay); +#ifdef GLOBEBROWSING_USE_GDAL + _globeBrowsing.setShowHelpTooltipDelay(_helpTextDelay); +#endif // GLOBEBROWSING_USE_GDAL + _performance.setShowHelpTooltipDelay(_helpTextDelay); _globalProperty.setShowHelpTooltipDelay(_helpTextDelay); _property.setShowHelpTooltipDelay(_helpTextDelay); _screenSpaceProperty.setShowHelpTooltipDelay(_helpTextDelay); _virtualProperty.setShowHelpTooltipDelay(_helpTextDelay); + _spaceTime.setShowHelpTooltipDelay(_helpTextDelay); + _mission.setShowHelpTooltipDelay(_helpTextDelay); +#ifdef OPENSPACE_MODULE_ISWA_ENABLED + _iswa.setShowHelpTooltipDelay(_helpTextDelay); +#endif // OPENSPACE_MODULE_ISWA_ENABLED + _parallel.setShowHelpTooltipDelay(_helpTextDelay); + _featuredProperties.setShowHelpTooltipDelay(_helpTextDelay); }; helpTextDelayFunc(); _helpTextDelay.onChange(std::move(helpTextDelayFunc)); diff --git a/modules/imgui/src/guicomponent.cpp b/modules/imgui/src/guicomponent.cpp index eab952eb7d..a30d275d24 100644 --- a/modules/imgui/src/guicomponent.cpp +++ b/modules/imgui/src/guicomponent.cpp @@ -57,6 +57,14 @@ void GuiComponent::setEnabled(bool enabled) { _isEnabled = enabled; } +void GuiComponent::setShowHelpTooltip(bool showHelpTooltip) { + _showHelpTooltip = showHelpTooltip; +} + +void GuiComponent::setShowHelpTooltipDelay(double delay) { + _tooltipDelay = delay; +} + void GuiComponent::initialize() {} void GuiComponent::initializeGL() {} diff --git a/modules/imgui/src/guipropertycomponent.cpp b/modules/imgui/src/guipropertycomponent.cpp index a7fef02322..a70ba6d359 100644 --- a/modules/imgui/src/guipropertycomponent.cpp +++ b/modules/imgui/src/guipropertycomponent.cpp @@ -183,14 +183,6 @@ void GuiPropertyComponent::setHasRegularProperties(bool hasOnlyRegularProperties _hasOnlyRegularProperties = hasOnlyRegularProperties; } -void GuiPropertyComponent::setShowHelpTooltip(bool showHelpTooltip) { - _showHelpTooltip = showHelpTooltip; -} - -void GuiPropertyComponent::setShowHelpTooltipDelay(double delay) { - _tooltipDelay = delay; -} - void GuiPropertyComponent::renderPropertyOwner(properties::PropertyOwner* owner) { if (owner->propertiesRecursive().empty()) { return; diff --git a/modules/imgui/src/guispacetimecomponent.cpp b/modules/imgui/src/guispacetimecomponent.cpp index 0bcbfd8b2c..2b02c73f51 100644 --- a/modules/imgui/src/guispacetimecomponent.cpp +++ b/modules/imgui/src/guispacetimecomponent.cpp @@ -35,6 +35,8 @@ #include #include +#include + namespace { static const ImVec2 Size = ImVec2(350, 500); @@ -44,6 +46,27 @@ namespace { "This value determines the minimum and maximum value for the delta time slider." }; + void showTooltip(const std::string& message, double delay) { + // Hackish way to enfore a window size for TextWrapped (SetNextWindowSize did not + // do the trick) + constexpr std::string::size_type FirstLineLength = 64; + if (ImGui::IsItemHovered() && GImGui->HoveredIdTimer > delay) { + ImGui::BeginTooltip(); + ImGui::Text( + "%s", + message.substr(0, std::min(message.size() - 1, FirstLineLength)).c_str() + ); + if (message.size() > FirstLineLength) { + ImGui::TextWrapped( + "%s", + message.substr(std::min(message.size() - 1, FirstLineLength)).c_str() + ); + } + + ImGui::EndTooltip(); + } + } + } // namespace namespace openspace::gui { @@ -152,15 +175,14 @@ void GuiSpaceTimeComponent::render() { scripting::ScriptEngine::RemoteScripting::Yes ); } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip( - "%s", - "Entering a date here and confirming with ENTER sets the current simulation " - "time to the entered date. The format of the date has to be either ISO 8601 " - "YYYY-MM-DDThh:mm:ss (2017-08-27T04:00:00) or YYYY MMM DD hh:mm:ss " - "(2017 MAY 01 12:00:00). The hours are in 24h and specified as UTC." - ); - } + + showTooltip( + "Entering a date here and confirming with ENTER sets the current simulation time " + "to the entered date. The format of the date has to be either ISO 8601 " + "YYYY-MM-DDThh:mm:ss (2017-08-27T04:00:00) or YYYY MMM DD hh:mm:ss " + "(2017 MAY 01 12:00:00). The hours are in 24h and specified as UTC.", + _tooltipDelay + ); auto incrementTime = [](int days) { using namespace std::chrono; @@ -186,12 +208,7 @@ void GuiSpaceTimeComponent::render() { }; bool minusMonth = ImGui::Button("-Month"); - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip( - "%s", - "OBS: A month here equals 30 days." - ); - } + showTooltip("OBS: A month here equals 30 days.", _tooltipDelay); if (minusMonth) { incrementTime(-30); } @@ -241,12 +258,7 @@ void GuiSpaceTimeComponent::render() { if (plusMonth) { incrementTime(30); } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip( - "%s", - "OBS: A month here equals 30 days." - ); - } + showTooltip("OBS: A month here equals 30 days.", _tooltipDelay); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 20.f); @@ -273,14 +285,12 @@ void GuiSpaceTimeComponent::render() { scripting::ScriptEngine::RemoteScripting::Yes ); } - if (ImGui::IsItemHovered()) { - ImGui::SetTooltip( - "%s", - "This determines the simulation time increment, that is the passage " - "of time in OpenSpace relative to a wall clock. Times are expressed as " - "simulation time / real world time." - ); - } + showTooltip( + "This determines the simulation time increment, that is the passage of time in " + "OpenSpace relative to a wall clock. Times are expressed as simulation time / " + "real world time.", + _tooltipDelay + ); bool isPaused = OsEng.timeManager().time().paused(); diff --git a/modules/spacecraftinstruments/rendering/renderableplaneprojection.cpp b/modules/spacecraftinstruments/rendering/renderableplaneprojection.cpp index 4e2042572a..e90c6b7ed6 100644 --- a/modules/spacecraftinstruments/rendering/renderableplaneprojection.cpp +++ b/modules/spacecraftinstruments/rendering/renderableplaneprojection.cpp @@ -82,8 +82,6 @@ RenderablePlaneProjection::RenderablePlaneProjection(const ghoul::Dictionary& di _texturePath = absPath(_texturePath); _textureFile = new ghoul::filesystem::File(_texturePath); } - - loadTexture(); } RenderablePlaneProjection::~RenderablePlaneProjection() {