From 69770612275c1951c040ec8af95c0b6864088009 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Tue, 1 Feb 2022 23:33:42 +0100 Subject: [PATCH] ux: Fixed tips popup and properly apply default layout on first start --- main/include/window.hpp | 13 ------- main/source/init/splash_window.cpp | 3 +- main/source/window/window.cpp | 12 ------- .../builtin/source/content/welcome_screen.cpp | 34 +++++++++++++++---- 4 files changed, 30 insertions(+), 32 deletions(-) diff --git a/main/include/window.hpp b/main/include/window.hpp index 64c7583aa..d946db984 100644 --- a/main/include/window.hpp +++ b/main/include/window.hpp @@ -33,9 +33,6 @@ namespace hex { void frame(); void frameEnd(); - void drawWelcomeScreen(); - void resetLayout() const; - void initGLFW(); void initImGui(); void exitGLFW(); @@ -47,22 +44,12 @@ namespace hex { GLFWwindow *m_window = nullptr; - bool m_layoutConfigured = false; - std::string m_windowTitle; double m_lastFrameTime; - std::string m_availableUpdate; - - bool m_showTipOfTheDay; - std::string m_tipOfTheDay; - - ImGui::Texture m_bannerTexture = { 0 }; ImGui::Texture m_logoTexture = { 0 }; - fs::path m_safetyBackupPath; - std::list m_popupsToOpen; std::vector m_pressedKeys; }; diff --git a/main/source/init/splash_window.cpp b/main/source/init/splash_window.cpp index 59fa2f2fa..6e6c437e0 100644 --- a/main/source/init/splash_window.cpp +++ b/main/source/init/splash_window.cpp @@ -48,7 +48,8 @@ namespace hex::init { } try { - status = task() && status; + if (!task()) + status = false; } catch (std::exception &e) { log::error("Init task '{}' threw an exception: {}", name, e.what()); status = false; diff --git a/main/source/window/window.cpp b/main/source/window/window.cpp index bbecf56cc..fe51ae4ba 100644 --- a/main/source/window/window.cpp +++ b/main/source/window/window.cpp @@ -424,18 +424,6 @@ namespace hex { this->m_lastFrameTime = glfwGetTime(); } - void Window::drawWelcomeScreen() { - } - - void Window::resetLayout() const { - - if (auto &layouts = ContentRegistry::Interface::getLayouts(); !layouts.empty()) { - auto &[name, function] = layouts[0]; - - function(ImHexApi::System::getMainDockSpaceId()); - } - } - void Window::initGLFW() { glfwSetErrorCallback([](int error, const char *desc) { log::error("GLFW Error [{}] : {}", error, desc); diff --git a/plugins/builtin/source/content/welcome_screen.cpp b/plugins/builtin/source/content/welcome_screen.cpp index 89a5ae464..b89e90eec 100644 --- a/plugins/builtin/source/content/welcome_screen.cpp +++ b/plugins/builtin/source/content/welcome_screen.cpp @@ -1,11 +1,12 @@ #include #include #include -#include #include +#include +#include #include #include -#include + #include @@ -14,6 +15,7 @@ #include #include +#include #include #include @@ -31,6 +33,23 @@ namespace hex::plugin::builtin { static std::string s_tipOfTheDay; + static void initDefaultLayout() { + auto layouts = ContentRegistry::Interface::getLayouts(); + if (!layouts.empty()) { + s_layoutConfigured = true; + + for (auto &[viewName, view] : ContentRegistry::Views::getEntries()) { + view->getWindowOpenState() = false; + } + + auto dockId = ImHexApi::System::getMainDockSpaceId(); + + ImGui::DockBuilderRemoveNode(dockId); + ImGui::DockBuilderAddNode(dockId); + layouts.front().callback(dockId); + ImGui::DockBuilderFinish(dockId); + } + } static void drawPopups() { ImGui::SetNextWindowPos(ImGui::GetMainViewport()->GetCenter(), ImGuiCond_Appearing, ImVec2(0.5F, 0.5F)); @@ -43,7 +62,7 @@ namespace hex::plugin::builtin { static bool dontShowAgain = false; if (ImGui::Checkbox("hex.common.dont_show_again"_lang, &dontShowAgain)) { - ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.show_tips", dontShowAgain); + ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.show_tips", !dontShowAgain); } ImGui::SameLine((ImGui::GetMainViewport()->Size / 3 - ImGui::CalcTextSize("hex.common.close"_lang) - ImGui::GetStyle().FramePadding).x); @@ -255,9 +274,6 @@ namespace hex::plugin::builtin { ImGui::PopStyleVar(); } ImGui::End(); - } else if (!s_layoutConfigured) { - s_layoutConfigured = true; - // TODO: FIX RESET LAYOUT } } ImGui::End(); @@ -382,6 +398,12 @@ namespace hex::plugin::builtin { ContentRegistry::Settings::write("hex.builtin.setting.imhex", "hex.builtin.setting.imhex.recent_files", recentFilesVector); } + + { + if (!s_layoutConfigured) { + initDefaultLayout(); + } + } }); ContentRegistry::Interface::addMenuItem("hex.builtin.menu.file", 1050, [&] {