impr: Cleanup welcome screen
This commit is contained in:
parent
c1abbfad7d
commit
450c93e029
@ -29,9 +29,9 @@ namespace hex::dbg {
|
|||||||
if constexpr (std::same_as<Type, bool>) {
|
if constexpr (std::same_as<Type, bool>) {
|
||||||
ImGui::Checkbox(name.data(), &variable);
|
ImGui::Checkbox(name.data(), &variable);
|
||||||
} else if constexpr (std::integral<Type> || std::floating_point<Type>) {
|
} else if constexpr (std::integral<Type> || std::floating_point<Type>) {
|
||||||
ImGui::InputScalar(name.data(), ImGuiExt::getImGuiDataType<Type>(), &variable);
|
ImGui::DragScalar(name.data(), ImGuiExt::getImGuiDataType<Type>(), &variable);
|
||||||
} else if constexpr (std::same_as<Type, ImVec2>) {
|
} else if constexpr (std::same_as<Type, ImVec2>) {
|
||||||
ImGui::InputFloat2(name.data(), &variable.x);
|
ImGui::DragFloat2(name.data(), &variable.x);
|
||||||
} else if constexpr (std::same_as<Type, std::string>) {
|
} else if constexpr (std::same_as<Type, std::string>) {
|
||||||
ImGui::InputText(name.data(), variable);
|
ImGui::InputText(name.data(), variable);
|
||||||
} else if constexpr (std::same_as<Type, ImColor>) {
|
} else if constexpr (std::same_as<Type, ImColor>) {
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
#include <hex/api/event_manager.hpp>
|
#include <hex/api/event_manager.hpp>
|
||||||
#include <hex/api/content_registry.hpp>
|
#include <hex/api/content_registry.hpp>
|
||||||
#include <hex/api/localization_manager.hpp>
|
#include <hex/api/localization_manager.hpp>
|
||||||
#include <hex/api/plugin_manager.hpp>
|
|
||||||
#include <hex/api/theme_manager.hpp>
|
#include <hex/api/theme_manager.hpp>
|
||||||
#include <hex/api/layout_manager.hpp>
|
#include <hex/api/layout_manager.hpp>
|
||||||
#include <hex/api/achievement_manager.hpp>
|
#include <hex/api/achievement_manager.hpp>
|
||||||
@ -11,6 +10,7 @@
|
|||||||
#include <hex/ui/view.hpp>
|
#include <hex/ui/view.hpp>
|
||||||
#include <hex/helpers/fs.hpp>
|
#include <hex/helpers/fs.hpp>
|
||||||
#include <hex/helpers/logger.hpp>
|
#include <hex/helpers/logger.hpp>
|
||||||
|
#include <hex/helpers/debugging.hpp>
|
||||||
|
|
||||||
#include <hex/api/project_file_manager.hpp>
|
#include <hex/api/project_file_manager.hpp>
|
||||||
|
|
||||||
@ -159,212 +159,176 @@ namespace hex::plugin::builtin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void drawWelcomeScreenContentFull() {
|
void drawWelcomeScreenContentFull() {
|
||||||
const auto availableSpace = ImGui::GetContentRegionAvail();
|
const ImVec2 margin = scaled({ 30, 20 });
|
||||||
|
|
||||||
ImGui::Image(s_bannerTexture, s_bannerTexture.getSize() / (2 * (1.0F / ImHexApi::System::getGlobalScale())));
|
ImGui::SetCursorPos(margin);
|
||||||
|
if (ImGui::BeginTable("Welcome Outer", 1, ImGuiTableFlags_None, ImGui::GetContentRegionAvail() - margin)) {
|
||||||
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_PopupBg));
|
ImGui::TableNextRow();
|
||||||
ON_SCOPE_EXIT { ImGui::PopStyleColor(); };
|
|
||||||
ImGui::Indent();
|
|
||||||
if (ImGui::BeginTable("Welcome Left", 1, ImGuiTableFlags_NoBordersInBody, ImVec2(availableSpace.x / 2, 0))) {
|
|
||||||
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 3);
|
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
|
ImGui::Image(s_bannerTexture, s_bannerTexture.getSize() / (1.5F * (1.0F / ImHexApi::System::getGlobalScale())));
|
||||||
|
|
||||||
ImGui::PushTextWrapPos(ImGui::GetCursorPosX() + std::min<float>(450_scaled, availableSpace.x / 2 - 50_scaled));
|
ImGui::PushTextWrapPos(500_scaled);
|
||||||
ImGuiExt::TextFormattedWrapped("A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.");
|
ImGuiExt::TextFormattedWrapped("A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.");
|
||||||
ImGui::PopTextWrapPos();
|
ImGui::PopTextWrapPos();
|
||||||
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 6);
|
ImGui::NewLine();
|
||||||
|
ImGui::NewLine();
|
||||||
|
ImGui::NewLine();
|
||||||
|
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_PopupBg));
|
||||||
|
ON_SCOPE_EXIT { ImGui::PopStyleColor(); };
|
||||||
|
|
||||||
|
ImGui::TableNextRow();
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
|
const auto availableSpace = ImGui::GetContentRegionAvail();
|
||||||
|
if (ImGui::BeginTable("Welcome Left", 1, ImGuiTableFlags_NoBordersInBody, ImVec2(availableSpace.x / 2, 0))) {
|
||||||
|
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 6);
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
|
||||||
static bool otherProvidersVisible = false;
|
static bool otherProvidersVisible = false;
|
||||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 5_scaled);
|
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 5_scaled);
|
||||||
|
|
||||||
{
|
|
||||||
auto startPos = ImGui::GetCursorPos();
|
|
||||||
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.start"_lang, ImVec2(), ImGuiChildFlags_AutoResizeX);
|
|
||||||
{
|
{
|
||||||
if (ImGuiExt::IconHyperlink(ICON_VS_NEW_FILE, "hex.builtin.welcome.start.create_file"_lang)) {
|
auto startPos = ImGui::GetCursorPos();
|
||||||
auto newProvider = hex::ImHexApi::Provider::createProvider("hex.builtin.provider.mem_file", true);
|
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.start"_lang, ImVec2(), ImGuiChildFlags_AutoResizeX);
|
||||||
if (newProvider != nullptr && !newProvider->open())
|
{
|
||||||
hex::ImHexApi::Provider::remove(newProvider);
|
if (ImGuiExt::IconHyperlink(ICON_VS_NEW_FILE, "hex.builtin.welcome.start.create_file"_lang)) {
|
||||||
else
|
auto newProvider = hex::ImHexApi::Provider::createProvider("hex.builtin.provider.mem_file", true);
|
||||||
EventProviderOpened::post(newProvider);
|
if (newProvider != nullptr && !newProvider->open())
|
||||||
|
hex::ImHexApi::Provider::remove(newProvider);
|
||||||
|
else
|
||||||
|
EventProviderOpened::post(newProvider);
|
||||||
|
}
|
||||||
|
if (ImGuiExt::IconHyperlink(ICON_VS_GO_TO_FILE, "hex.builtin.welcome.start.open_file"_lang))
|
||||||
|
RequestOpenWindow::post("Open File");
|
||||||
|
if (ImGuiExt::IconHyperlink(ICON_VS_NOTEBOOK, "hex.builtin.welcome.start.open_project"_lang))
|
||||||
|
RequestOpenWindow::post("Open Project");
|
||||||
|
if (ImGuiExt::IconHyperlink(ICON_VS_TELESCOPE, "hex.builtin.welcome.start.open_other"_lang))
|
||||||
|
otherProvidersVisible = !otherProvidersVisible;
|
||||||
}
|
}
|
||||||
if (ImGuiExt::IconHyperlink(ICON_VS_GO_TO_FILE, "hex.builtin.welcome.start.open_file"_lang))
|
ImGuiExt::EndSubWindow();
|
||||||
RequestOpenWindow::post("Open File");
|
auto endPos = ImGui::GetCursorPos();
|
||||||
if (ImGuiExt::IconHyperlink(ICON_VS_NOTEBOOK, "hex.builtin.welcome.start.open_project"_lang))
|
|
||||||
RequestOpenWindow::post("Open Project");
|
if (otherProvidersVisible) {
|
||||||
if (ImGuiExt::IconHyperlink(ICON_VS_TELESCOPE, "hex.builtin.welcome.start.open_other"_lang))
|
ImGui::SameLine(0, 2_scaled);
|
||||||
otherProvidersVisible = !otherProvidersVisible;
|
ImGui::SetCursorPos(ImGui::GetCursorPos() + ImVec2(0, (endPos - startPos).y / 2));
|
||||||
|
ImGui::TextUnformatted(ICON_VS_ARROW_RIGHT);
|
||||||
|
ImGui::SameLine(0, 2_scaled);
|
||||||
|
|
||||||
|
ImGuiExt::BeginSubWindow("hex.builtin.welcome.start.open_other"_lang, ImVec2(200_scaled, ImGui::GetTextLineHeightWithSpacing() * 6), ImGuiChildFlags_AutoResizeX);
|
||||||
|
for (const auto &unlocalizedProviderName : ContentRegistry::Provider::impl::getEntries()) {
|
||||||
|
if (ImGuiExt::Hyperlink(Lang(unlocalizedProviderName))) {
|
||||||
|
ImHexApi::Provider::createProvider(unlocalizedProviderName);
|
||||||
|
otherProvidersVisible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGuiExt::EndSubWindow();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw recent entries
|
||||||
|
ImGui::Dummy({});
|
||||||
|
recent::draw();
|
||||||
|
|
||||||
|
if (ImHexApi::System::getInitArguments().contains("update-available")) {
|
||||||
|
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
ImGuiExt::UnderlinedText("hex.builtin.welcome.header.update"_lang);
|
||||||
|
{
|
||||||
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.update.title"_lang, hex::format("hex.builtin.welcome.update.desc"_lang, ImHexApi::System::getInitArguments()["update-available"]).c_str(), ImVec2(ImGui::GetContentRegionAvail().x * 0.8F, 0)))
|
||||||
|
ImHexApi::System::updateImHex(ImHexApi::System::UpdateType::Stable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 6);
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
|
||||||
|
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 5_scaled);
|
||||||
|
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.help"_lang, ImVec2(), ImGuiChildFlags_AutoResizeX);
|
||||||
|
{
|
||||||
|
if (ImGuiExt::IconHyperlink(ICON_VS_GITHUB, "hex.builtin.welcome.help.repo"_lang)) hex::openWebpage("hex.builtin.welcome.help.repo.link"_lang);
|
||||||
|
if (ImGuiExt::IconHyperlink(ICON_VS_ORGANIZATION, "hex.builtin.welcome.help.gethelp"_lang)) hex::openWebpage("hex.builtin.welcome.help.gethelp.link"_lang);
|
||||||
|
if (ImGuiExt::IconHyperlink(ICON_VS_COMMENT_DISCUSSION, "hex.builtin.welcome.help.discord"_lang)) hex::openWebpage("hex.builtin.welcome.help.discord.link"_lang);
|
||||||
}
|
}
|
||||||
ImGuiExt::EndSubWindow();
|
ImGuiExt::EndSubWindow();
|
||||||
auto endPos = ImGui::GetCursorPos();
|
|
||||||
|
|
||||||
if (otherProvidersVisible) {
|
ImGui::EndTable();
|
||||||
ImGui::SameLine(0, 2_scaled);
|
}
|
||||||
ImGui::SetCursorPos(ImGui::GetCursorPos() + ImVec2(0, (endPos - startPos).y / 2));
|
ImGui::SameLine();
|
||||||
ImGui::TextUnformatted(ICON_VS_ARROW_RIGHT);
|
if (ImGui::BeginTable("Welcome Right", 1, ImGuiTableFlags_NoBordersInBody, ImVec2(availableSpace.x / 2, 0))) {
|
||||||
ImGui::SameLine(0, 2_scaled);
|
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
|
||||||
ImGuiExt::BeginSubWindow("hex.builtin.welcome.start.open_other"_lang, ImVec2(200_scaled, ImGui::GetTextLineHeightWithSpacing() * 6), ImGuiChildFlags_AutoResizeX);
|
auto windowPadding = ImGui::GetStyle().WindowPadding.x * 3;
|
||||||
for (const auto &unlocalizedProviderName : ContentRegistry::Provider::impl::getEntries()) {
|
|
||||||
if (ImGuiExt::Hyperlink(Lang(unlocalizedProviderName))) {
|
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.customize"_lang, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0), ImGuiChildFlags_AutoResizeX);
|
||||||
ImHexApi::Provider::createProvider(unlocalizedProviderName);
|
{
|
||||||
otherProvidersVisible = false;
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.customize.settings.title"_lang, "hex.builtin.welcome.customize.settings.desc"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0)))
|
||||||
|
RequestOpenWindow::post("Settings");
|
||||||
|
}
|
||||||
|
ImGuiExt::EndSubWindow();
|
||||||
|
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
|
||||||
|
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.learn"_lang, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0), ImGuiChildFlags_AutoResizeX);
|
||||||
|
{
|
||||||
|
const auto size = ImVec2(ImGui::GetContentRegionAvail().x, 0);
|
||||||
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.latest.title"_lang, "hex.builtin.welcome.learn.latest.desc"_lang, size))
|
||||||
|
hex::openWebpage("hex.builtin.welcome.learn.latest.link"_lang);
|
||||||
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.imhex.title"_lang, "hex.builtin.welcome.learn.imhex.desc"_lang, size)) {
|
||||||
|
AchievementManager::unlockAchievement("hex.builtin.achievement.starting_out", "hex.builtin.achievement.starting_out.docs.name");
|
||||||
|
hex::openWebpage("hex.builtin.welcome.learn.imhex.link"_lang);
|
||||||
|
}
|
||||||
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.pattern.title"_lang, "hex.builtin.welcome.learn.pattern.desc"_lang, size))
|
||||||
|
hex::openWebpage("hex.builtin.welcome.learn.pattern.link"_lang);
|
||||||
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.plugins.title"_lang, "hex.builtin.welcome.learn.plugins.desc"_lang, size))
|
||||||
|
hex::openWebpage("hex.builtin.welcome.learn.plugins.link"_lang);
|
||||||
|
|
||||||
|
if (auto [unlocked, total] = AchievementManager::getProgress(); unlocked != total) {
|
||||||
|
if (ImGuiExt::DescriptionButtonProgress("hex.builtin.welcome.learn.achievements.title"_lang, "hex.builtin.welcome.learn.achievements.desc"_lang, float(unlocked) / float(total), size)) {
|
||||||
|
RequestOpenWindow::post("Achievements");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
ImGuiExt::EndSubWindow();
|
||||||
|
|
||||||
|
auto extraWelcomeScreenEntries = ContentRegistry::Interface::impl::getWelcomeScreenEntries();
|
||||||
|
if (!extraWelcomeScreenEntries.empty()) {
|
||||||
|
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
||||||
|
ImGui::TableNextColumn();
|
||||||
|
|
||||||
|
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.various"_lang, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0));
|
||||||
|
{
|
||||||
|
for (const auto &callback : extraWelcomeScreenEntries)
|
||||||
|
callback();
|
||||||
|
}
|
||||||
ImGuiExt::EndSubWindow();
|
ImGuiExt::EndSubWindow();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Draw recent entries
|
if (s_infoBannerTexture.isValid()) {
|
||||||
ImGui::Dummy({});
|
static bool hovered = false;
|
||||||
recent::draw();
|
|
||||||
|
|
||||||
if (ImHexApi::System::getInitArguments().contains("update-available")) {
|
ImGui::PushStyleColor(ImGuiCol_Border, ImGui::GetStyleColorVec4(hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Border));
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
|
||||||
ImGui::TableNextColumn();
|
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.info"_lang, ImVec2(), ImGuiChildFlags_AutoResizeX);
|
||||||
ImGuiExt::UnderlinedText("hex.builtin.welcome.header.update"_lang);
|
{
|
||||||
{
|
const auto height = 80_scaled;
|
||||||
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.update.title"_lang, hex::format("hex.builtin.welcome.update.desc"_lang, ImHexApi::System::getInitArguments()["update-available"]).c_str(), ImVec2(ImGui::GetContentRegionAvail().x * 0.8F, 0)))
|
ImGui::Image(s_infoBannerTexture, ImVec2(height * s_infoBannerTexture.getAspectRatio(), height));
|
||||||
ImHexApi::System::updateImHex(ImHexApi::System::UpdateType::Stable);
|
hovered = ImGui::IsItemHovered();
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 6);
|
if (ImGui::IsItemClicked()) {
|
||||||
ImGui::TableNextColumn();
|
hex::openWebpage(ImHexApiURL + hex::format("/info/{}/link", hex::toLower(ImHexApi::System::getOSName())));
|
||||||
|
|
||||||
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 5_scaled);
|
|
||||||
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.help"_lang, ImVec2(), ImGuiChildFlags_AutoResizeX);
|
|
||||||
{
|
|
||||||
if (ImGuiExt::IconHyperlink(ICON_VS_GITHUB, "hex.builtin.welcome.help.repo"_lang)) hex::openWebpage("hex.builtin.welcome.help.repo.link"_lang);
|
|
||||||
if (ImGuiExt::IconHyperlink(ICON_VS_ORGANIZATION, "hex.builtin.welcome.help.gethelp"_lang)) hex::openWebpage("hex.builtin.welcome.help.gethelp.link"_lang);
|
|
||||||
if (ImGuiExt::IconHyperlink(ICON_VS_COMMENT_DISCUSSION, "hex.builtin.welcome.help.discord"_lang)) hex::openWebpage("hex.builtin.welcome.help.discord.link"_lang);
|
|
||||||
}
|
|
||||||
ImGuiExt::EndSubWindow();
|
|
||||||
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
|
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
|
|
||||||
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.plugins"_lang, ImVec2(ImGui::GetContentRegionAvail().x * 0.8F, 0), ImGuiChildFlags_AutoResizeX);
|
|
||||||
{
|
|
||||||
const auto &plugins = PluginManager::getPlugins();
|
|
||||||
|
|
||||||
if (!plugins.empty()) {
|
|
||||||
if (ImGui::BeginTable("plugins", 4, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_ScrollY | ImGuiTableFlags_SizingFixedFit, ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 5))) {
|
|
||||||
ImGui::TableSetupScrollFreeze(0, 1);
|
|
||||||
ImGui::TableSetupColumn("hex.builtin.welcome.plugins.plugin"_lang);
|
|
||||||
ImGui::TableSetupColumn("hex.builtin.welcome.plugins.author"_lang);
|
|
||||||
ImGui::TableSetupColumn("hex.builtin.welcome.plugins.desc"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5);
|
|
||||||
ImGui::TableSetupColumn("##loaded", ImGuiTableColumnFlags_WidthFixed, ImGui::GetTextLineHeight());
|
|
||||||
|
|
||||||
ImGui::TableHeadersRow();
|
|
||||||
|
|
||||||
ImGuiListClipper clipper;
|
|
||||||
clipper.Begin(plugins.size());
|
|
||||||
|
|
||||||
while (clipper.Step()) {
|
|
||||||
for (int i = clipper.DisplayStart; i < clipper.DisplayEnd; i++) {
|
|
||||||
const auto &plugin = plugins[i];
|
|
||||||
|
|
||||||
ImGui::TableNextRow();
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
ImGui::TextUnformatted(plugin.getPluginName().c_str());
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
ImGui::TextUnformatted(plugin.getPluginAuthor().c_str());
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
ImGui::TextUnformatted(plugin.getPluginDescription().c_str());
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
ImGui::TextUnformatted(plugin.isLoaded() ? ICON_VS_CHECK : ICON_VS_CLOSE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clipper.End();
|
|
||||||
|
|
||||||
ImGui::EndTable();
|
|
||||||
}
|
}
|
||||||
|
ImGuiExt::EndSubWindow();
|
||||||
|
ImGui::PopStyleVar();
|
||||||
|
ImGui::PopStyleColor();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
ImGuiExt::EndSubWindow();
|
|
||||||
ImGui::PopStyleVar();
|
|
||||||
|
|
||||||
ImGui::EndTable();
|
|
||||||
}
|
|
||||||
ImGui::SameLine();
|
|
||||||
if (ImGui::BeginTable("Welcome Right", 1, ImGuiTableFlags_NoBordersInBody, ImVec2(availableSpace.x / 2, 0))) {
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
|
|
||||||
auto windowPadding = ImGui::GetStyle().WindowPadding.x * 3;
|
|
||||||
|
|
||||||
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.customize"_lang, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0), ImGuiChildFlags_AutoResizeX);
|
|
||||||
{
|
|
||||||
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.customize.settings.title"_lang, "hex.builtin.welcome.customize.settings.desc"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0)))
|
|
||||||
RequestOpenWindow::post("Settings");
|
|
||||||
}
|
|
||||||
ImGuiExt::EndSubWindow();
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
|
|
||||||
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.learn"_lang, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0), ImGuiChildFlags_AutoResizeX);
|
|
||||||
{
|
|
||||||
const auto size = ImVec2(ImGui::GetContentRegionAvail().x, 0);
|
|
||||||
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.latest.title"_lang, "hex.builtin.welcome.learn.latest.desc"_lang, size))
|
|
||||||
hex::openWebpage("hex.builtin.welcome.learn.latest.link"_lang);
|
|
||||||
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.imhex.title"_lang, "hex.builtin.welcome.learn.imhex.desc"_lang, size)) {
|
|
||||||
AchievementManager::unlockAchievement("hex.builtin.achievement.starting_out", "hex.builtin.achievement.starting_out.docs.name");
|
|
||||||
hex::openWebpage("hex.builtin.welcome.learn.imhex.link"_lang);
|
|
||||||
}
|
|
||||||
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.pattern.title"_lang, "hex.builtin.welcome.learn.pattern.desc"_lang, size))
|
|
||||||
hex::openWebpage("hex.builtin.welcome.learn.pattern.link"_lang);
|
|
||||||
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.plugins.title"_lang, "hex.builtin.welcome.learn.plugins.desc"_lang, size))
|
|
||||||
hex::openWebpage("hex.builtin.welcome.learn.plugins.link"_lang);
|
|
||||||
|
|
||||||
if (auto [unlocked, total] = AchievementManager::getProgress(); unlocked != total) {
|
|
||||||
if (ImGuiExt::DescriptionButtonProgress("hex.builtin.welcome.learn.achievements.title"_lang, "hex.builtin.welcome.learn.achievements.desc"_lang, float(unlocked) / float(total), size)) {
|
|
||||||
RequestOpenWindow::post("Achievements");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ImGuiExt::EndSubWindow();
|
|
||||||
|
|
||||||
auto extraWelcomeScreenEntries = ContentRegistry::Interface::impl::getWelcomeScreenEntries();
|
|
||||||
if (!extraWelcomeScreenEntries.empty()) {
|
|
||||||
ImGui::TableNextRow(ImGuiTableRowFlags_None, ImGui::GetTextLineHeightWithSpacing() * 5);
|
|
||||||
ImGui::TableNextColumn();
|
|
||||||
|
|
||||||
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.various"_lang, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0));
|
|
||||||
{
|
|
||||||
for (const auto &callback : extraWelcomeScreenEntries)
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
ImGuiExt::EndSubWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s_infoBannerTexture.isValid()) {
|
|
||||||
static bool hovered = false;
|
|
||||||
|
|
||||||
ImGui::PushStyleColor(ImGuiCol_Border, ImGui::GetStyleColorVec4(hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Border));
|
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
|
|
||||||
ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.info"_lang, ImVec2(), ImGuiChildFlags_AutoResizeX);
|
|
||||||
{
|
|
||||||
const auto height = 80_scaled;
|
|
||||||
ImGui::Image(s_infoBannerTexture, ImVec2(height * s_infoBannerTexture.getAspectRatio(), height));
|
|
||||||
hovered = ImGui::IsItemHovered();
|
|
||||||
|
|
||||||
if (ImGui::IsItemClicked()) {
|
|
||||||
hex::openWebpage(ImHexApiURL + hex::format("/info/{}/link", hex::toLower(ImHexApi::System::getOSName())));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ImGuiExt::EndSubWindow();
|
|
||||||
ImGui::PopStyleVar();
|
|
||||||
ImGui::PopStyleColor();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user