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:
Ryan Fleury
2024-09-16 15:59:01 -07:00
parent 9899efe93c
commit 2f86e289a4
4 changed files with 405 additions and 212 deletions
+126 -5
View File
@@ -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;
}
}
+26 -1
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -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