mirror of https://github.com/WerWolv/ImHex
impr: Add icons to welcome screen description buttons
This commit is contained in:
parent
e5cdf22753
commit
d359a21a66
|
|
@ -134,8 +134,8 @@ namespace ImGuiExt {
|
||||||
bool IconHyperlink(const char *icon, const char *label, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
bool IconHyperlink(const char *icon, const char *label, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
||||||
bool Hyperlink(const char *label, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
bool Hyperlink(const char *label, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
||||||
bool BulletHyperlink(const char *label, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
bool BulletHyperlink(const char *label, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
||||||
bool DescriptionButton(const char *label, const char *description, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
bool DescriptionButton(const char *label, const char *description, const char *icon, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
||||||
bool DescriptionButtonProgress(const char *label, const char *description, float fraction, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
bool DescriptionButtonProgress(const char *label, const char *description, const char *icon, float fraction, const ImVec2 &size_arg = ImVec2(0, 0), ImGuiButtonFlags flags = 0);
|
||||||
|
|
||||||
void HelpHover(const char *text, const char *icon = "(?)", ImU32 iconColor = ImGui::GetColorU32(ImGuiCol_ButtonActive));
|
void HelpHover(const char *text, const char *icon = "(?)", ImU32 iconColor = ImGui::GetColorU32(ImGuiCol_ButtonActive));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -435,7 +435,7 @@ namespace ImGuiExt {
|
||||||
return pressed;
|
return pressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DescriptionButton(const char *label, const char *description, const ImVec2 &size_arg, ImGuiButtonFlags flags) {
|
bool DescriptionButton(const char *label, const char *description, const char *icon, const ImVec2 &size_arg, ImGuiButtonFlags flags) {
|
||||||
ImGuiWindow *window = GetCurrentWindow();
|
ImGuiWindow *window = GetCurrentWindow();
|
||||||
if (window->SkipItems)
|
if (window->SkipItems)
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -465,15 +465,23 @@ namespace ImGuiExt {
|
||||||
// Render
|
// Render
|
||||||
const ImU32 col = GetCustomColorU32((held && hovered) ? ImGuiCustomCol_DescButtonActive : hovered ? ImGuiCustomCol_DescButtonHovered
|
const ImU32 col = GetCustomColorU32((held && hovered) ? ImGuiCustomCol_DescButtonActive : hovered ? ImGuiCustomCol_DescButtonHovered
|
||||||
: ImGuiCustomCol_DescButton);
|
: ImGuiCustomCol_DescButton);
|
||||||
|
float icon_padding = style.FramePadding.x * 2;
|
||||||
|
float label_padding = icon_padding + style.FramePadding.x * 5;
|
||||||
|
float description_padding = label_padding + style.FramePadding.x * 2;
|
||||||
|
|
||||||
RenderNavCursor(bb, id);
|
RenderNavCursor(bb, id);
|
||||||
RenderFrame(bb.Min, bb.Max, col, true, style.FrameRounding);
|
RenderFrame(bb.Min, bb.Max, col, true, style.FrameRounding);
|
||||||
|
PushFont(GImGui->Font, GImGui->FontSizeBase * 1.25F);
|
||||||
|
const ImVec2 icon_size = CalcTextSize(icon, nullptr, true);
|
||||||
|
RenderTextClipped(bb.Min + ImVec2(icon_padding, (size.y - icon_size.y) / 2), bb.Max - style.FramePadding, icon, nullptr, nullptr);
|
||||||
|
PopFont();
|
||||||
PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_ButtonActive));
|
PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_ButtonActive));
|
||||||
RenderTextClipped(bb.Min + style.FramePadding * 2, bb.Max - style.FramePadding, label, nullptr, nullptr);
|
RenderTextClipped(bb.Min + style.FramePadding * 2 + ImVec2(label_padding, 0), bb.Max - style.FramePadding, label, nullptr, nullptr);
|
||||||
PopStyleColor();
|
PopStyleColor();
|
||||||
PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_Text));
|
PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_Text));
|
||||||
auto clipBb = bb;
|
auto clipBb = bb;
|
||||||
clipBb.Max.x -= style.FramePadding.x;
|
clipBb.Max.x -= style.FramePadding.x;
|
||||||
RenderTextClipped(bb.Min + style.FramePadding * 2 + ImVec2(style.FramePadding.x * 2, label_size.y), bb.Max - style.FramePadding, description, nullptr, &text_size, style.ButtonTextAlign, &clipBb);
|
RenderTextClipped(bb.Min + style.FramePadding * 2 + ImVec2(description_padding, label_size.y), bb.Max - style.FramePadding, description, nullptr, &text_size, style.ButtonTextAlign, &clipBb);
|
||||||
PopStyleColor();
|
PopStyleColor();
|
||||||
|
|
||||||
PopStyleVar(2);
|
PopStyleVar(2);
|
||||||
|
|
@ -486,7 +494,7 @@ namespace ImGuiExt {
|
||||||
return pressed;
|
return pressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DescriptionButtonProgress(const char *label, const char *description, float fraction, const ImVec2 &size_arg, ImGuiButtonFlags flags) {
|
bool DescriptionButtonProgress(const char *label, const char *description, const char *icon, float fraction, const ImVec2 &size_arg, ImGuiButtonFlags flags) {
|
||||||
ImGuiWindow *window = GetCurrentWindow();
|
ImGuiWindow *window = GetCurrentWindow();
|
||||||
if (window->SkipItems)
|
if (window->SkipItems)
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -516,15 +524,23 @@ namespace ImGuiExt {
|
||||||
// Render
|
// Render
|
||||||
const ImU32 col = GetCustomColorU32((held && hovered) ? ImGuiCustomCol_DescButtonActive : hovered ? ImGuiCustomCol_DescButtonHovered
|
const ImU32 col = GetCustomColorU32((held && hovered) ? ImGuiCustomCol_DescButtonActive : hovered ? ImGuiCustomCol_DescButtonHovered
|
||||||
: ImGuiCustomCol_DescButton);
|
: ImGuiCustomCol_DescButton);
|
||||||
|
float icon_padding = style.FramePadding.x * 2;
|
||||||
|
float label_padding = icon_padding + style.FramePadding.x * 5;
|
||||||
|
float description_padding = label_padding + style.FramePadding.x * 2;
|
||||||
|
|
||||||
RenderNavCursor(bb, id);
|
RenderNavCursor(bb, id);
|
||||||
RenderFrame(bb.Min, bb.Max, col, false, style.FrameRounding);
|
RenderFrame(bb.Min, bb.Max, col, true, style.FrameRounding);
|
||||||
|
PushFont(GImGui->Font, GImGui->FontSizeBase * 1.25F);
|
||||||
|
const ImVec2 icon_size = CalcTextSize(icon, nullptr, true);
|
||||||
|
RenderTextClipped(bb.Min + ImVec2(icon_padding, (size.y - icon_size.y) / 2), bb.Max - style.FramePadding, icon, nullptr, nullptr);
|
||||||
|
PopFont();
|
||||||
PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_ButtonActive));
|
PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_ButtonActive));
|
||||||
RenderTextClipped(bb.Min + style.FramePadding * 2, bb.Max - style.FramePadding, label, nullptr, nullptr);
|
RenderTextClipped(bb.Min + style.FramePadding * 2 + ImVec2(label_padding, 0), bb.Max - style.FramePadding, label, nullptr, nullptr);
|
||||||
PopStyleColor();
|
PopStyleColor();
|
||||||
PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_Text));
|
PushStyleColor(ImGuiCol_Text, GetColorU32(ImGuiCol_Text));
|
||||||
auto clipBb = bb;
|
auto clipBb = bb;
|
||||||
clipBb.Max.x -= style.FramePadding.x;
|
clipBb.Max.x -= style.FramePadding.x;
|
||||||
RenderTextClipped(bb.Min + style.FramePadding * 2 + ImVec2(style.FramePadding.x * 2, label_size.y), bb.Max - style.FramePadding, description, nullptr, &text_size, style.ButtonTextAlign, &clipBb);
|
RenderTextClipped(bb.Min + style.FramePadding * 2 + ImVec2(description_padding, label_size.y), bb.Max - style.FramePadding, description, nullptr, &text_size, style.ButtonTextAlign, &clipBb);
|
||||||
PopStyleColor();
|
PopStyleColor();
|
||||||
|
|
||||||
RenderFrame(ImVec2(bb.Min.x, bb.Max.y - 5 * hex::ImHexApi::System::getGlobalScale()), bb.Max, GetColorU32(ImGuiCol_ScrollbarBg), false, style.FrameRounding);
|
RenderFrame(ImVec2(bb.Min.x, bb.Max.y - 5 * hex::ImHexApi::System::getGlobalScale()), bb.Max, GetColorU32(ImGuiCol_ScrollbarBg), false, style.FrameRounding);
|
||||||
|
|
|
||||||
|
|
@ -414,7 +414,7 @@ namespace hex::plugin::builtin {
|
||||||
auto windowPadding = ImGui::GetStyle().WindowPadding.x * 3;
|
auto windowPadding = ImGui::GetStyle().WindowPadding.x * 3;
|
||||||
|
|
||||||
if (ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.customize"_lang, nullptr, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0), ImGuiChildFlags_AutoResizeX)) {
|
if (ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.customize"_lang, nullptr, 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)))
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.customize.settings.title"_lang, "hex.builtin.welcome.customize.settings.desc"_lang, ICON_VS_SETTINGS_GEAR, ImVec2(ImGui::GetContentRegionAvail().x, 0)))
|
||||||
RequestOpenWindow::post("Settings");
|
RequestOpenWindow::post("Settings");
|
||||||
}
|
}
|
||||||
ImGuiExt::EndSubWindow();
|
ImGuiExt::EndSubWindow();
|
||||||
|
|
@ -424,24 +424,24 @@ namespace hex::plugin::builtin {
|
||||||
|
|
||||||
if (ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.learn"_lang, nullptr, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0), ImGuiChildFlags_AutoResizeX)) {
|
if (ImGuiExt::BeginSubWindow("hex.builtin.welcome.header.learn"_lang, nullptr, ImVec2(ImGui::GetContentRegionAvail().x - windowPadding, 0), ImGuiChildFlags_AutoResizeX)) {
|
||||||
const auto size = ImVec2(ImGui::GetContentRegionAvail().x, 0);
|
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))
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.latest.title"_lang, "hex.builtin.welcome.learn.latest.desc"_lang, ICON_VS_GITHUB, size))
|
||||||
hex::openWebpage("hex.builtin.welcome.learn.latest.link"_lang);
|
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)) {
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.imhex.title"_lang, "hex.builtin.welcome.learn.imhex.desc"_lang, ICON_VS_BOOK, size)) {
|
||||||
AchievementManager::unlockAchievement("hex.builtin.achievement.starting_out", "hex.builtin.achievement.starting_out.docs.name");
|
AchievementManager::unlockAchievement("hex.builtin.achievement.starting_out", "hex.builtin.achievement.starting_out.docs.name");
|
||||||
hex::openWebpage("hex.builtin.welcome.learn.imhex.link"_lang);
|
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))
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.pattern.title"_lang, "hex.builtin.welcome.learn.pattern.desc"_lang, ICON_VS_SYMBOL_NAMESPACE, size))
|
||||||
hex::openWebpage("hex.builtin.welcome.learn.pattern.link"_lang);
|
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))
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.plugins.title"_lang, "hex.builtin.welcome.learn.plugins.desc"_lang, ICON_VS_PLUG, size))
|
||||||
hex::openWebpage("hex.builtin.welcome.learn.plugins.link"_lang);
|
hex::openWebpage("hex.builtin.welcome.learn.plugins.link"_lang);
|
||||||
|
|
||||||
ImGui::SeparatorEx(ImGuiSeparatorFlags_Horizontal, 3_scaled);
|
ImGui::SeparatorEx(ImGuiSeparatorFlags_Horizontal, 3_scaled);
|
||||||
|
|
||||||
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.interactive_tutorial.title"_lang, "hex.builtin.welcome.learn.interactive_tutorial.desc"_lang, size)) {
|
if (ImGuiExt::DescriptionButton("hex.builtin.welcome.learn.interactive_tutorial.title"_lang, "hex.builtin.welcome.learn.interactive_tutorial.desc"_lang, ICON_VS_COMPASS, size)) {
|
||||||
RequestOpenWindow::post("Tutorials");
|
RequestOpenWindow::post("Tutorials");
|
||||||
}
|
}
|
||||||
if (auto [unlocked, total] = AchievementManager::getProgress(); unlocked != total) {
|
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)) {
|
if (ImGuiExt::DescriptionButtonProgress("hex.builtin.welcome.learn.achievements.title"_lang, "hex.builtin.welcome.learn.achievements.desc"_lang, ICON_VS_SPARKLE, float(unlocked) / float(total), size)) {
|
||||||
RequestOpenWindow::post("Achievements");
|
RequestOpenWindow::post("Achievements");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue