1
0
mirror of synced 2025-01-29 19:17:28 +01:00

feat: Added minimal layout

This commit is contained in:
WerWolv 2023-12-02 14:35:44 +01:00
parent 866cb5706d
commit 4fd3167bb3
4 changed files with 210 additions and 5 deletions

@ -1 +1 @@
Subproject commit aaf491cbc71bb9b610671b82a8c8262af5061212
Subproject commit e4891c89b6df5e3dd7ac976f12fbcc8d850b3c8d

View File

@ -1192,7 +1192,9 @@ namespace hex {
handler.ReadOpenFn = [](ImGuiContext *ctx, ImGuiSettingsHandler *, const char *) -> void* { return ctx; };
handler.ReadLineFn = [](ImGuiContext *, ImGuiSettingsHandler *, void *, const char *line) {
handler.ReadLineFn = [](ImGuiContext *, ImGuiSettingsHandler *handler, void *, const char *line) {
Window* window = static_cast<Window*>(handler->UserData);
for (auto &[name, view] : ContentRegistry::Views::impl::getEntries()) {
std::string format = view->getUnlocalizedName() + "=%d";
sscanf(line, format.c_str(), &view->getWindowOpenState());
@ -1201,6 +1203,15 @@ namespace hex {
std::string format = name + "=%d";
sscanf(line, format.c_str(), &detached);
}
int width = 0, height = 0;
sscanf(line, "MainWindowSize=%d,%d", &width, &height);
if (width > 0 && height > 0) {
TaskManager::doLater([width, height, window]{
glfwSetWindowSize(window->m_window, width, height);
});
}
};
handler.WriteAllFn = [](ImGuiContext *, ImGuiSettingsHandler *handler, ImGuiTextBuffer *buf) {

View File

@ -0,0 +1,192 @@
[Window][ImHexDockSpace]
Pos=0,38
Size=2560,1513
Collapsed=0
[Window][###hex.builtin.view.settings.name]
Pos=259,200
Size=700,400
Collapsed=0
[Window][###hex.builtin.view.hex_editor.name]
Pos=0,76
Size=1140,980
Collapsed=0
DockId=0x00000007,0
[Window][###hex.builtin.view.data_inspector.name]
Pos=1142,76
Size=553,980
Collapsed=0
DockId=0x00000008,0
[Window][###hex.builtin.view.pattern_data.name]
Pos=0,1058
Size=1695,445
Collapsed=0
DockId=0x00000006,0
[Window][###hex.builtin.view.pattern_editor.name]
Pos=1697,76
Size=863,1427
Collapsed=0
DockId=0x00000004,0
[Window][###hex.builtin.view.hashes.name]
Pos=1697,76
Size=863,1427
Collapsed=0
DockId=0x00000004,4
[Window][###hex.builtin.view.find.name]
Pos=1697,76
Size=863,1427
Collapsed=0
DockId=0x00000004,3
[Window][###hex.builtin.view.bookmarks.name]
Pos=1697,76
Size=863,1427
Collapsed=0
DockId=0x00000004,2
[Window][###hex.builtin.view.information.name]
Pos=-1889,-120
Size=510,420
Collapsed=0
[Window][###hex.builtin.view.yara.name]
Pos=720,38
Size=560,660
Collapsed=0
[Window][###hex.builtin.view.store.name]
Pos=562,201
Size=900,700
Collapsed=0
[Window][###hex.builtin.view.diff.name]
Pos=1233,38
Size=687,1021
Collapsed=0
[Window][###hex.builtin.view.provider_settings.name]
Pos=822,38
Size=637,720
Collapsed=0
[Window][###hex.builtin.view.provider_settings.load_popup]
Pos=585,322
Size=314,208
Collapsed=0
[Window][###hex.builtin.view.patches.name]
Pos=-1889,-120
Size=510,420
Collapsed=0
[Window][###hex.builtin.view.data_processor.name]
Pos=1697,76
Size=863,1427
Collapsed=0
DockId=0x00000004,1
[Window][###hex.builtin.view.tools.name]
ViewportPos=952,218
ViewportId=0x9B385D8A
Size=1306,1600
Collapsed=0
[Window][###hex.builtin.view.theme_manager.name]
Pos=391,302
Size=469,400
Collapsed=0
[Window][###hex.builtin.tools.invariant_multiplication]
Pos=-1826,300
Size=600,232
Collapsed=0
[Window][###hex.builtin.tools.regex_replacer]
Pos=-2091,104
Size=600,305
Collapsed=0
[Window][###hex.builtin.tools.calc]
Pos=-1811,118
Size=600,402
Collapsed=0
[Window][###hex.builtin.tools.permissions]
Pos=423,296
Size=600,220
Collapsed=0
[Window][###hex.builtin.view.help.about.name]
Pos=214,201
Size=600,350
Collapsed=0
[Window][###hex.builtin.view.constants.name]
Pos=419,-124
Size=652,660
Collapsed=0
[Window][###hex.builtin.view.disassembler.name]
Pos=1004,-204
Size=1336,1320
Collapsed=0
[Docking][Data]
DockSpace ID=0x81A8BB71 Window=0xF9B0A590 Pos=161,350 Size=2560,1427 Split=X
DockNode ID=0x00000001 Parent=0x81A8BB71 SizeRef=847,0 Split=Y
DockNode ID=0x00000005 Parent=0x00000001 SizeRef=0,44 Split=X Selected=0x5708C63F
DockNode ID=0x00000007 Parent=0x00000005 SizeRef=1140,701 Selected=0x5708C63F
DockNode ID=0x00000008 Parent=0x00000005 SizeRef=553,701 Selected=0xFBA7A393
DockNode ID=0x00000006 Parent=0x00000001 SizeRef=0,20 Selected=0x7AD1CDDD
DockNode ID=0x00000002 Parent=0x81A8BB71 SizeRef=431,0 Split=X
DockNode ID=0x00000003 Parent=0x00000002 SizeRef=12,0
DockNode ID=0x00000004 Parent=0x00000002 SizeRef=52,0 Selected=0xCACA884B
[ImHex][General]
hex.builtin.view.achievements.name=0
hex.builtin.view.bookmarks.name=0
hex.builtin.view.command_palette.name=0
hex.builtin.view.constants.name=0
hex.builtin.view.data_inspector.name=0
hex.builtin.view.data_processor.name=0
hex.builtin.view.diff.name=0
hex.builtin.view.disassembler.name=0
hex.builtin.view.find.name=0
hex.builtin.view.hashes.name=0
hex.builtin.view.help.about.name=0
hex.builtin.view.hex_editor.name=1
hex.builtin.view.highlight_rules.name=0
hex.builtin.view.information.name=0
hex.builtin.view.logs.name=0
hex.builtin.view.patches.name=0
hex.builtin.view.pattern_data.name=0
hex.builtin.view.pattern_editor.name=0
hex.builtin.view.provider_settings.name=0
hex.builtin.view.settings.name=0
hex.builtin.view.store.name=0
hex.builtin.view.theme_manager.name=0
hex.builtin.view.tools.name=0
hex.builtin.view.yara.name=0
hex.windows.view.tty_console.name=0
hex.builtin.tools.demangler=0
hex.builtin.tools.ascii_table=0
hex.builtin.tools.regex_replacer=0
hex.builtin.tools.color=0
hex.builtin.tools.calc=0
hex.builtin.tools.graphing=0
hex.builtin.tools.base_converter=0
hex.builtin.tools.byte_swapper=0
hex.builtin.tools.permissions=0
hex.builtin.tools.wiki_explain=0
hex.builtin.tools.file_tools=0
hex.builtin.tools.ieee754=0
hex.builtin.tools.invariant_multiplication=0
hex.builtin.tools.tcp_client_server=0
hex.builtin.tools.euclidean_algorithm=0
MainWindowSize=720,1000

View File

@ -551,13 +551,15 @@ namespace hex::plugin::builtin {
ContentRegistry::Interface::addMenuItemSeparator({ "hex.builtin.menu.layout" }, 1200);
ContentRegistry::Interface::addMenuItemSubMenu({ "hex.builtin.menu.layout" }, 2000, [] {
if (ImGui::MenuItem("hex.builtin.layouts.default"_lang, "", false, ImHexApi::Provider::isValid())) {
LayoutManager::loadString(std::string(romfs::get("layouts/default.hexlyt").string()));
for (const auto &path : romfs::list("layouts")) {
if (ImGui::MenuItem(wolv::util::capitalizeString(path.stem().string()).c_str(), "", false, ImHexApi::Provider::isValid())) {
LayoutManager::loadString(std::string(romfs::get(path).string()));
}
}
bool shift = ImGui::GetIO().KeyShift;
for (auto &[name, path] : LayoutManager::getLayouts()) {
if (ImGui::MenuItem(hex::format("{}{}", name, shift ? " [X]" : "").c_str(), "", false, ImHexApi::Provider::isValid())) {
if (ImGui::MenuItem(hex::format("{}{}", name, shift ? " " ICON_VS_X : "").c_str(), "", false, ImHexApi::Provider::isValid())) {
if (shift) {
wolv::io::fs::remove(path);
LayoutManager::reload();