mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-04 12:58:41 +00:00
source view bottom bar -> warn if file timestamp is newer than currently-used debug info
This commit is contained in:
+55
-11
@@ -5524,6 +5524,29 @@ DF_VIEW_UI_FUNCTION_DEF(Code)
|
|||||||
ui_scroll_pt_clamp_idx(&view->scroll_pos.y, scroll_idx_rng[Axis2_Y]);
|
ui_scroll_pt_clamp_idx(&view->scroll_pos.y, scroll_idx_rng[Axis2_Y]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////////////////////////
|
||||||
|
//- rjf: determine up-to-dateness of source file
|
||||||
|
//
|
||||||
|
B32 file_is_out_of_date = 0;
|
||||||
|
String8 out_of_date_binary_name = {0};
|
||||||
|
for(DF_EntityNode *n = code_slice_params.relevant_binaries.first; n != 0; n = n->next)
|
||||||
|
{
|
||||||
|
DF_Entity *binary = n->entity;
|
||||||
|
if(!df_entity_is_nil(binary))
|
||||||
|
{
|
||||||
|
String8 full_path = df_full_path_from_entity(scratch.arena, entity);
|
||||||
|
TXTI_Handle handle = txti_handle_from_path(full_path);
|
||||||
|
TXTI_BufferInfo info = txti_buffer_info_from_handle(scratch.arena, handle);
|
||||||
|
DBGI_Parse *parse = df_dbgi_parse_from_binary_file(scope, binary);
|
||||||
|
if(parse->exe_props.modified < info.timestamp)
|
||||||
|
{
|
||||||
|
file_is_out_of_date = 1;
|
||||||
|
out_of_date_binary_name = binary->name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
//- rjf: build bottom info bar
|
//- rjf: build bottom info bar
|
||||||
//
|
//
|
||||||
@@ -5533,26 +5556,47 @@ DF_VIEW_UI_FUNCTION_DEF(Code)
|
|||||||
ui_set_next_fixed_y(code_area_dim.y + scroll_bar_dim);
|
ui_set_next_fixed_y(code_area_dim.y + scroll_bar_dim);
|
||||||
ui_set_next_pref_width(ui_px(bottom_bar_dim.x, 1));
|
ui_set_next_pref_width(ui_px(bottom_bar_dim.x, 1));
|
||||||
ui_set_next_pref_height(ui_px(bottom_bar_dim.y, 1));
|
ui_set_next_pref_height(ui_px(bottom_bar_dim.y, 1));
|
||||||
ui_set_next_background_color(df_rgba_from_theme_color(DF_ThemeColor_AltBackground));
|
ui_set_next_background_color(df_rgba_from_theme_color(file_is_out_of_date ? DF_ThemeColor_FailureBackground : DF_ThemeColor_AltBackground));
|
||||||
ui_set_next_flags(UI_BoxFlag_DrawBackground);
|
ui_set_next_flags(UI_BoxFlag_DrawBackground);
|
||||||
UI_Row
|
UI_Row
|
||||||
UI_TextAlignment(UI_TextAlign_Center)
|
UI_TextAlignment(UI_TextAlign_Center)
|
||||||
UI_PrefWidth(ui_text_dim(10, 1))
|
UI_PrefWidth(ui_text_dim(10, 1))
|
||||||
UI_TextColor(df_rgba_from_theme_color(DF_ThemeColor_WeakText))
|
UI_TextColor(df_rgba_from_theme_color(DF_ThemeColor_WeakText))
|
||||||
UI_Font(code_font)
|
|
||||||
{
|
{
|
||||||
String8 full_path = df_full_path_from_entity(scratch.arena, entity);
|
String8 full_path = df_full_path_from_entity(scratch.arena, entity);
|
||||||
TXTI_Handle handle = txti_handle_from_path(full_path);
|
TXTI_Handle handle = txti_handle_from_path(full_path);
|
||||||
TXTI_BufferInfo info = txti_buffer_info_from_handle(scratch.arena, handle);
|
TXTI_BufferInfo info = txti_buffer_info_from_handle(scratch.arena, handle);
|
||||||
ui_label(full_path);
|
if(file_is_out_of_date)
|
||||||
ui_spacer(ui_em(1.5f, 1));
|
{
|
||||||
ui_labelf("Row: %I64d, Col: %I64d", tv->cursor.line, tv->cursor.column);
|
UI_Box *box = &ui_g_nil_box;
|
||||||
ui_spacer(ui_pct(1, 0));
|
UI_TextColor(df_rgba_from_theme_color(DF_ThemeColor_FailureText))
|
||||||
ui_labelf("(read only)");
|
UI_Font(df_font_from_slot(DF_FontSlot_Icons))
|
||||||
ui_labelf("%s",
|
{
|
||||||
info.line_end_kind == TXTI_LineEndKind_LF ? "lf" :
|
box = ui_build_box_from_stringf(UI_BoxFlag_DrawText|UI_BoxFlag_Clickable, "%S###file_ood_warning", df_g_icon_kind_text_table[DF_IconKind_WarningBig]);
|
||||||
info.line_end_kind == TXTI_LineEndKind_CRLF ? "crlf" :
|
}
|
||||||
"bin");
|
UI_Signal sig = ui_signal_from_box(box);
|
||||||
|
if(sig.hovering) UI_Tooltip
|
||||||
|
{
|
||||||
|
UI_PrefWidth(ui_children_sum(1)) UI_Row UI_PrefWidth(ui_text_dim(1, 1))
|
||||||
|
{
|
||||||
|
ui_labelf("This file has changed since ", out_of_date_binary_name);
|
||||||
|
UI_TextColor(df_rgba_from_theme_color(DF_ThemeColor_Highlight0)) ui_label(out_of_date_binary_name);
|
||||||
|
ui_labelf(" was built.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
UI_Font(code_font)
|
||||||
|
{
|
||||||
|
ui_label(full_path);
|
||||||
|
ui_spacer(ui_em(1.5f, 1));
|
||||||
|
ui_labelf("Row: %I64d, Col: %I64d", tv->cursor.line, tv->cursor.column);
|
||||||
|
ui_spacer(ui_pct(1, 0));
|
||||||
|
ui_labelf("(read only)");
|
||||||
|
ui_labelf("%s",
|
||||||
|
info.line_end_kind == TXTI_LineEndKind_LF ? "lf" :
|
||||||
|
info.line_end_kind == TXTI_LineEndKind_CRLF ? "crlf" :
|
||||||
|
"bin");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -190,6 +190,10 @@ str8_lit_comp(
|
|||||||
" {\n"
|
" {\n"
|
||||||
" border_sdf_t = 1;\n"
|
" border_sdf_t = 1;\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
|
" if(border_sdf_t < 0.001f)\n"
|
||||||
|
" {\n"
|
||||||
|
" discard;\n"
|
||||||
|
" }\n"
|
||||||
" \n"
|
" \n"
|
||||||
" // rjf: form+return final color\n"
|
" // rjf: form+return final color\n"
|
||||||
" float4 final_color = albedo_sample;\n"
|
" float4 final_color = albedo_sample;\n"
|
||||||
|
|||||||
@@ -189,6 +189,10 @@ ps_main(Vertex2Pixel vertex2pixel) : SV_TARGET
|
|||||||
{
|
{
|
||||||
border_sdf_t = 1;
|
border_sdf_t = 1;
|
||||||
}
|
}
|
||||||
|
if(border_sdf_t < 0.001f)
|
||||||
|
{
|
||||||
|
discard;
|
||||||
|
}
|
||||||
|
|
||||||
// rjf: form+return final color
|
// rjf: form+return final color
|
||||||
float4 final_color = albedo_sample;
|
float4 final_color = albedo_sample;
|
||||||
|
|||||||
Reference in New Issue
Block a user