mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-04-01 21:17:44 -05:00
impr: Added data size widget
This commit is contained in:
@@ -828,15 +828,6 @@ namespace ImGuiExt {
|
||||
char buf[64];
|
||||
DataTypeFormatString(buf, IM_ARRAYSIZE(buf), type, value, format);
|
||||
|
||||
bool value_changed = false;
|
||||
PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0);
|
||||
if (InputTextEx(label, nullptr, buf, IM_ARRAYSIZE(buf), ImVec2(CalcItemWidth() - frame_size.x, label_size.y + style.FramePadding.y * 2.0F), flags))
|
||||
value_changed = DataTypeApplyFromText(buf, type, value, format);
|
||||
PopStyleVar();
|
||||
|
||||
if (value_changed)
|
||||
MarkItemEdited(GImGui->LastItemData.ID);
|
||||
|
||||
RenderNavHighlight(frame_bb, id);
|
||||
RenderFrame(frame_bb.Min, frame_bb.Max, GetColorU32(ImGuiCol_FrameBg), true, style.FrameRounding);
|
||||
|
||||
@@ -844,6 +835,19 @@ namespace ImGuiExt {
|
||||
RenderText(ImVec2(frame_bb.Min.x + style.FramePadding.x, frame_bb.Min.y + style.FramePadding.y), prefix);
|
||||
PopStyleVar();
|
||||
|
||||
bool value_changed = false;
|
||||
PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0);
|
||||
PushStyleColor(ImGuiCol_FrameBg, 0x00000000);
|
||||
PushStyleColor(ImGuiCol_FrameBgHovered, 0x00000000);
|
||||
PushStyleColor(ImGuiCol_FrameBgActive, 0x00000000);
|
||||
if (InputTextEx(label, nullptr, buf, IM_ARRAYSIZE(buf), ImVec2(CalcItemWidth() - frame_size.x, label_size.y + style.FramePadding.y * 2.0F), flags))
|
||||
value_changed = DataTypeApplyFromText(buf, type, value, format);
|
||||
PopStyleColor(3);
|
||||
PopStyleVar();
|
||||
|
||||
if (value_changed)
|
||||
MarkItemEdited(GImGui->LastItemData.ID);
|
||||
|
||||
return value_changed;
|
||||
}
|
||||
|
||||
@@ -855,6 +859,21 @@ namespace ImGuiExt {
|
||||
return InputIntegerPrefix(label, "0x", value, ImGuiDataType_U64, "%llX", flags | ImGuiInputTextFlags_CharsHexadecimal);
|
||||
}
|
||||
|
||||
bool SliderBytes(const char *label, u64 *value, u64 min, u64 max, ImGuiSliderFlags flags) {
|
||||
std::string format;
|
||||
if (*value < 1024) {
|
||||
format = hex::format("{} Bytes", *value);
|
||||
} else if (*value < 1024 * 1024) {
|
||||
format = hex::format("{:.2f} KB", *value / 1024.0);
|
||||
} else if (*value < 1024 * 1024 * 1024) {
|
||||
format = hex::format("{:.2f} MB", *value / (1024.0 * 1024.0));
|
||||
} else {
|
||||
format = hex::format("{:.2f} GB", *value / (1024.0 * 1024.0 * 1024.0));
|
||||
}
|
||||
|
||||
return ImGui::SliderScalar(label, ImGuiDataType_U64, value, &min, &max, format.c_str(), flags | ImGuiSliderFlags_Logarithmic);
|
||||
}
|
||||
|
||||
void SmallProgressBar(float fraction, float yOffset) {
|
||||
ImGuiWindow *window = GetCurrentWindow();
|
||||
if (window->SkipItems)
|
||||
|
||||
Reference in New Issue
Block a user