mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-25 05:04:58 -07:00
get all view code off of explicit view parameterization; merge row value cell ui hook with regular view ui hook
This commit is contained in:
+126
-5
@@ -2289,6 +2289,10 @@ rd_view_equip_loading_info(RD_View *view, B32 is_loading, U64 progress_v, U64 pr
|
||||
view->loading_t_target = (F32)!!is_loading;
|
||||
view->loading_progress_v = progress_v;
|
||||
view->loading_progress_v_target = progress_target;
|
||||
if(is_loading)
|
||||
{
|
||||
view->loading_t = view->loading_t_target;
|
||||
}
|
||||
}
|
||||
|
||||
//- rjf: user state extensions
|
||||
@@ -2366,6 +2370,112 @@ rd_view_store_paramf(RD_View *view, String8 key, char *fmt, ...)
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: View Building API
|
||||
|
||||
//- rjf: view info extraction
|
||||
|
||||
internal Arena *
|
||||
rd_view_arena(void)
|
||||
{
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
return view->arena;
|
||||
}
|
||||
|
||||
internal UI_ScrollPt2
|
||||
rd_view_scroll_pos(void)
|
||||
{
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
return view->scroll_pos;
|
||||
}
|
||||
|
||||
internal String8
|
||||
rd_view_expr_string(void)
|
||||
{
|
||||
// TODO(rjf): @msgs filter and expr string need to be different
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
String8 expr_string = str8(view->query_buffer, view->query_string_size);
|
||||
return expr_string;
|
||||
}
|
||||
|
||||
internal String8
|
||||
rd_view_filter(void)
|
||||
{
|
||||
// TODO(rjf): @msgs filter and expr string need to be different
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
String8 filter = str8(view->query_buffer, view->query_string_size);
|
||||
return filter;
|
||||
}
|
||||
|
||||
//- rjf: pushing/attaching view resources
|
||||
|
||||
internal void *
|
||||
rd_view_state_by_size(U64 size)
|
||||
{
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
void *result = rd_view_get_or_push_user_state(view, size);
|
||||
return result;
|
||||
}
|
||||
|
||||
internal Arena *
|
||||
rd_push_view_arena(void)
|
||||
{
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
Arena *result = rd_view_push_arena_ext(view);
|
||||
return result;
|
||||
}
|
||||
|
||||
//- rjf: storing view-attached state
|
||||
|
||||
internal void
|
||||
rd_store_view_expr_string(String8 string)
|
||||
{
|
||||
// TODO(rjf): @msgs filter and expr string need to be different
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
rd_view_equip_query(view, string);
|
||||
}
|
||||
|
||||
internal void
|
||||
rd_store_view_filter(String8 string)
|
||||
{
|
||||
// TODO(rjf): @msgs filter and expr string need to be different
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
rd_view_equip_query(view, string);
|
||||
}
|
||||
|
||||
internal void
|
||||
rd_store_view_loading_info(B32 is_loading, U64 progress_u64, U64 progress_u64_target)
|
||||
{
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
rd_view_equip_loading_info(view, is_loading, progress_u64, progress_u64_target);
|
||||
}
|
||||
|
||||
internal void
|
||||
rd_store_view_scroll_pos(UI_ScrollPt2 pos)
|
||||
{
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
view->scroll_pos = pos;
|
||||
}
|
||||
|
||||
internal void
|
||||
rd_store_view_param(String8 key, String8 value)
|
||||
{
|
||||
RD_View *view = rd_view_from_handle(rd_regs()->view);
|
||||
rd_view_store_param(view, key, value);
|
||||
}
|
||||
|
||||
internal void
|
||||
rd_store_view_paramf(String8 key, char *fmt, ...)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
String8 string = push_str8fv(scratch.arena, fmt, args);
|
||||
rd_store_view_param(key, string);
|
||||
va_end(args);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Expand-Keyed Transient View Functions
|
||||
|
||||
@@ -2877,7 +2987,7 @@ rd_window_frame(RD_Window *ws)
|
||||
UI_Parent(view_preview_container) UI_Focus(UI_FocusKind_Off) UI_WidthFill
|
||||
{
|
||||
RD_ViewRuleUIFunctionType *view_ui = view->spec->ui;
|
||||
view_ui(view, str8(view->query_buffer, view->query_string_size), view->params_roots[view->params_read_gen%ArrayCount(view->params_roots)], view_preview_container->rect);
|
||||
view_ui(str8(view->query_buffer, view->query_string_size), view->params_roots[view->params_read_gen%ArrayCount(view->params_roots)], view_preview_container->rect);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5230,9 +5340,10 @@ rd_window_frame(RD_Window *ws)
|
||||
|
||||
//- rjf: build query view
|
||||
UI_Parent(query_container_box) UI_WidthFill UI_Focus(UI_FocusKind_Null)
|
||||
RD_RegsScope(.view = rd_handle_from_view(view))
|
||||
{
|
||||
RD_ViewRuleUIFunctionType *view_ui = view->spec->ui;
|
||||
view_ui(view, str8(view->query_buffer, view->query_string_size), view->params_roots[view->params_read_gen%ArrayCount(view->params_roots)], query_container_content_rect);
|
||||
view_ui(str8(view->query_buffer, view->query_string_size), view->params_roots[view->params_read_gen%ArrayCount(view->params_roots)], query_container_content_rect);
|
||||
}
|
||||
|
||||
//- rjf: query submission
|
||||
@@ -6281,7 +6392,7 @@ rd_window_frame(RD_Window *ws)
|
||||
//- rjf: build empty view
|
||||
UI_Parent(view_container_box) if(rd_view_is_nil(rd_selected_tab_from_panel(panel)))
|
||||
{
|
||||
RD_VIEW_RULE_UI_FUNCTION_NAME(empty)(&rd_nil_view, str8_zero(), &md_nil_node, content_rect);
|
||||
RD_VIEW_RULE_UI_FUNCTION_NAME(empty)(str8_zero(), &md_nil_node, content_rect);
|
||||
}
|
||||
|
||||
//- rjf: build tab view
|
||||
@@ -6289,7 +6400,7 @@ rd_window_frame(RD_Window *ws)
|
||||
{
|
||||
RD_View *view = rd_selected_tab_from_panel(panel);
|
||||
RD_ViewRuleUIFunctionType *view_ui = view->spec->ui;
|
||||
view_ui(view, str8(view->query_buffer, view->query_string_size), view->params_roots[view->params_read_gen%ArrayCount(view->params_roots)], content_rect);
|
||||
view_ui(str8(view->query_buffer, view->query_string_size), view->params_roots[view->params_read_gen%ArrayCount(view->params_roots)], content_rect);
|
||||
}
|
||||
|
||||
//- rjf: pop interaction registers; commit if this is the selected view
|
||||
@@ -7453,6 +7564,10 @@ rd_append_value_strings_from_eval(Arena *arena, EV_StringFlags flags, U32 defaul
|
||||
else if(str8_match(n->v.root->string, str8_lit("no_addr"), 0)) {no_addr = 1;}
|
||||
else if(str8_match(n->v.root->string, str8_lit("array"), 0)) {has_array = 1;}
|
||||
}
|
||||
if(eval.space.kind == CTRL_EvalSpaceKind_Meta)
|
||||
{
|
||||
no_addr = 1;
|
||||
}
|
||||
|
||||
//- rjf: member evaluations -> display member info
|
||||
if(eval.mode == E_Mode_Null && !e_type_key_match(e_type_key_zero(), eval.type_key) && member != 0)
|
||||
@@ -13924,9 +14039,14 @@ rd_frame(void)
|
||||
targets.count = target_entities.count;
|
||||
targets.v = push_array(scratch.arena, D_Target, targets.count);
|
||||
U64 idx = 0;
|
||||
for(RD_EntityNode *n = target_entities.first; n != 0; n = n->next, idx += 1)
|
||||
for(RD_EntityNode *n = target_entities.first; n != 0; n = n->next)
|
||||
{
|
||||
RD_Entity *src_target = n->entity;
|
||||
if(src_target->disabled)
|
||||
{
|
||||
targets.count -= 1;
|
||||
continue;
|
||||
}
|
||||
RD_Entity *src_target_exe = rd_entity_child_from_kind(src_target, RD_EntityKind_Executable);
|
||||
RD_Entity *src_target_args = rd_entity_child_from_kind(src_target, RD_EntityKind_Arguments);
|
||||
RD_Entity *src_target_wdir = rd_entity_child_from_kind(src_target, RD_EntityKind_WorkingDirectory);
|
||||
@@ -13936,6 +14056,7 @@ rd_frame(void)
|
||||
dst_target->args = src_target_args->string;
|
||||
dst_target->working_directory = src_target_wdir->string;
|
||||
dst_target->custom_entry_point_name = src_target_entry->string;
|
||||
idx += 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -166,7 +166,7 @@ enum
|
||||
RD_ViewRuleInfoFlag_CanExpand = (1<<6),
|
||||
};
|
||||
|
||||
#define RD_VIEW_RULE_UI_FUNCTION_SIG(name) void name(RD_View *view, String8 string, MD_Node *params, Rng2F32 rect)
|
||||
#define RD_VIEW_RULE_UI_FUNCTION_SIG(name) void name(String8 string, MD_Node *params, Rng2F32 rect)
|
||||
#define RD_VIEW_RULE_UI_FUNCTION_NAME(name) rd_view_rule_ui_##name
|
||||
#define RD_VIEW_RULE_UI_FUNCTION_DEF(name) internal RD_VIEW_RULE_UI_FUNCTION_SIG(RD_VIEW_RULE_UI_FUNCTION_NAME(name))
|
||||
typedef RD_VIEW_RULE_UI_FUNCTION_SIG(RD_ViewRuleUIFunctionType);
|
||||
@@ -1229,6 +1229,31 @@ internal void rd_view_store_paramf(RD_View *view, String8 key, char *fmt, ...);
|
||||
#define rd_view_store_param_s64(view, key, s64) rd_view_store_paramf((view), (key), "%I64d", (s64))
|
||||
#define rd_view_store_param_u64(view, key, u64) rd_view_store_paramf((view), (key), "0x%I64x", (u64))
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: View Building API
|
||||
|
||||
//- rjf: view info extraction
|
||||
internal Arena *rd_view_arena(void);
|
||||
internal UI_ScrollPt2 rd_view_scroll_pos(void);
|
||||
internal String8 rd_view_expr_string(void);
|
||||
internal String8 rd_view_filter(void);
|
||||
|
||||
//- rjf: pushing/attaching view resources
|
||||
internal void *rd_view_state_by_size(U64 size);
|
||||
#define rd_view_state(T) (T *)rd_view_state_by_size(sizeof(T))
|
||||
internal Arena *rd_push_view_arena(void);
|
||||
|
||||
//- rjf: storing view-attached state
|
||||
internal void rd_store_view_expr_string(String8 string);
|
||||
internal void rd_store_view_filter(String8 string);
|
||||
internal void rd_store_view_loading_info(B32 is_loading, U64 progress_u64, U64 progress_u64_target);
|
||||
internal void rd_store_view_scroll_pos(UI_ScrollPt2 pos);
|
||||
internal void rd_store_view_param(String8 key, String8 value);
|
||||
internal void rd_store_view_paramf(String8 key, char *fmt, ...);
|
||||
#define rd_store_view_param_f32(key, f32) rd_store_view_paramf((key), "%ff", (f32))
|
||||
#define rd_store_view_param_s64(key, s64) rd_store_view_paramf((key), "%I64d", (s64))
|
||||
#define rd_store_view_param_u64(key, u64) rd_store_view_paramf((key), "0x%I64x", (u64))
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Expand-Keyed Transient View Functions
|
||||
|
||||
|
||||
+249
-202
File diff suppressed because it is too large
Load Diff
@@ -150,8 +150,8 @@ struct RD_WatchViewState
|
||||
////////////////////////////////
|
||||
//~ rjf: Code View Functions
|
||||
|
||||
internal void rd_code_view_init(RD_CodeViewState *cv, RD_View *view);
|
||||
internal RD_CodeViewBuildResult rd_code_view_build(Arena *arena, RD_View *view, RD_CodeViewState *cv, RD_CodeViewBuildFlags flags, Rng2F32 rect, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key);
|
||||
internal void rd_code_view_init(RD_CodeViewState *cv);
|
||||
internal RD_CodeViewBuildResult rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags flags, Rng2F32 rect, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Watch View Functions
|
||||
@@ -176,7 +176,7 @@ internal RD_WatchViewColumn *rd_watch_view_column_alloc_(RD_WatchViewState *wv,
|
||||
internal void rd_watch_view_column_release(RD_WatchViewState *wv, RD_WatchViewColumn *col);
|
||||
|
||||
//- rjf: watch view main hooks
|
||||
internal void rd_watch_view_init(RD_WatchViewState *ewv, RD_View *view, RD_WatchViewFillKind fill_kind);
|
||||
internal void rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 default_radix, Rng2F32 rect);
|
||||
internal void rd_watch_view_init(RD_WatchViewState *ewv, RD_WatchViewFillKind fill_kind);
|
||||
internal void rd_watch_view_build(RD_WatchViewState *ewv, B32 modifiable, U32 default_radix, Rng2F32 rect);
|
||||
|
||||
#endif // RADDBG_VIEWS_H
|
||||
|
||||
Reference in New Issue
Block a user