hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/src/ui/ui.h
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-03-14 19:30:33 +0100
committerhachem <im@hachem.wtf>2026-03-14 19:30:33 +0100
commitfadc56fa2952ad4031247e9e642a0fa2eab92ee0 (patch)
treec8d535fad584825cc0746fa20987eade349de743 /src/ui/ui.h
parent75c96946c9ad945fadede7d16130966f601ccaa7 (diff)
refactor: overhaul the ui
Diffstat (limited to 'src/ui/ui.h')
-rw-r--r--src/ui/ui.h43
1 files changed, 39 insertions, 4 deletions
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 2898fd2..0dcb7e6 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -45,19 +45,22 @@ namespace Hsdbg
bool threads = true;
bool source_tree = true;
bool locals = true;
+ bool watch = true;
bool registers = true;
bool symbols = true;
bool disassembly = true;
bool console = true;
- bool profiler = true;
- bool timeline = true;
- bool macros = true;
+
+ bool profiler = false;
+ bool macros = false;
bool demo = false;
};
auto apply_style() -> void;
static auto build_default_layout(uint32_t dockspace_id) -> void;
+ auto draw_command_palette(Debugger& debugger) -> void;
+
auto draw_menu_bar(Debugger& debugger) -> void;
auto draw_toolbar(Debugger& debugger) -> void;
auto draw_status_bar(const Debugger& debugger) -> void;
@@ -71,12 +74,16 @@ namespace Hsdbg
auto draw_threads_panel(Debugger& debugger) -> void;
auto draw_source_tree_panel(const Debugger& debugger) -> void;
auto draw_locals_panel(const Debugger& debugger) -> void;
+ auto draw_watch_panel(Debugger& debugger) -> void;
auto draw_registers_panel(const Debugger& debugger) -> void;
+
+ auto add_watch(Debugger& debugger, std::string expression) -> void;
auto draw_symbols_panel(Debugger& debugger) -> void;
auto draw_disassembly_panel(Debugger& debugger) -> void;
auto draw_console_panel(Debugger& debugger) -> void;
auto draw_profiler_panel(Debugger& debugger) -> void;
- auto draw_timeline_panel(Debugger& debugger) -> void;
+
+ static auto draw_flamegraph(const Debugger& debugger) -> void;
auto draw_macros_panel(Debugger& debugger) -> void;
auto push_console(std::string line) -> void;
@@ -84,6 +91,8 @@ namespace Hsdbg
auto follow_stop(Debugger& debugger) -> void;
auto follow_target(Debugger& debugger) -> void;
+
+ auto follow_selected_frame(Debugger& debugger) -> void;
auto show_frame(const StackFrame& frame) -> void;
Window* m_window = nullptr;
@@ -115,6 +124,27 @@ namespace Hsdbg
std::string m_source_filter;
std::string m_trace_input;
+ struct Watch
+ {
+ std::string expression;
+ std::string value;
+ bool ok = false;
+ };
+
+ std::vector<Watch> m_watches;
+ std::string m_watch_input;
+
+ uint64_t m_watch_stop = 0;
+ uint64_t m_watch_thread = 0;
+ uint32_t m_watch_frame = 0;
+ bool m_watch_evaluated = false;
+
+ bool m_palette_open = false;
+ bool m_palette_request = false;
+ bool m_palette_focus = false;
+ std::string m_palette_query;
+ int m_palette_selection = 0;
+
std::string m_macro_input;
std::string m_macro_output;
int m_macro_level = 0;
@@ -122,12 +152,17 @@ namespace Hsdbg
uint64_t m_followed_stop = 0;
std::filesystem::path m_followed_target;
+ std::filesystem::path m_revealed_source;
+
+ bool m_profiler_revealed = false;
+
bool m_layout_built = false;
bool m_select_default_tabs = false;
bool m_console_scroll_pending = false;
bool m_load_target_pending = false;
bool m_focus_breakpoints = false;
bool m_focus_macros = false;
+ bool m_focus_profiler = false;
bool m_focus_symbols = false;
bool m_focus_disassembly = false;
bool m_scroll_to_program_counter = false;