#pragma once #include #include #include #include #include #include #define IMGUI_INCLUDE_IMGUI_USER_H #include "imgui.h" #include "frontend/target.h" #include "backend/debug_backend.h" #include "frontend/window.h" namespace dbgui::frontend { struct Frontend { Frontend(); void run_frame(); std::optional target = {}; ImGuiID dock_id = 0; uint64_t window_id = 0; private: void draw_header(); void draw_open_popup(); void draw_status(); void handle_msgs(); void handle_state_change(const BackToFront::StateChange &); void handle_proc_info(BackToFront::InitialProcessInfo &&); void handle_reg_change(const BackToFront::RegsChanged &); void handle_thread_remove(const BackToFront::ThreadRemoved &); void handle_thread_change(BackToFront::ThreadChange &&); void handle_frame_remove(const BackToFront::FrameRemoved &); void handle_frame_change(BackToFront::FrameChanged &&); bool _draw_second = false; bool _draw_metric_window = false; bool _draw_stack_tool = false; bool _draw_demo_window = false; bool _draw_open_popup = false; ImGuiID _open_popup_id = 0; std::vector _open_popup_name_buf = {}; bool _open_popup_stop_at_entry = false; std::vector _windows = {}; }; } // namespace dbgui::frontend