From dda0e012bf02f2181139f76d01b313616eab1deb Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 10 May 2024 09:35:03 -0700 Subject: [PATCH] support getting started view in default panel layout --- src/df/gfx/df_gfx.c | 54 +++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index f36435f7..75789aaf 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -1311,6 +1311,7 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D DF_View *modules = &df_g_nil_view; DF_View *disasm = &df_g_nil_view; DF_View *memory = &df_g_nil_view; + DF_View *getting_started = &df_g_nil_view; DF_HandleList code_views = {0}; for(DF_Panel *panel = ws->root_panel; !df_panel_is_nil(panel); panel = df_panel_rec_df_pre(panel).next) { @@ -1324,22 +1325,23 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D switch(view_kind) { default:{}break; - case DF_GfxViewKind_Watch: {if(df_view_is_nil(watch)) { needs_delete = 0; watch = view;} }break; - case DF_GfxViewKind_Locals: {if(df_view_is_nil(locals)) { needs_delete = 0; locals = view;} }break; - case DF_GfxViewKind_Registers: {if(df_view_is_nil(regs)) { needs_delete = 0; regs = view;} }break; - case DF_GfxViewKind_Globals: {if(df_view_is_nil(globals)) { needs_delete = 0; globals = view;} }break; - case DF_GfxViewKind_ThreadLocals:{if(df_view_is_nil(tlocals)) { needs_delete = 0; tlocals = view;} }break; - case DF_GfxViewKind_Types: {if(df_view_is_nil(types)) { needs_delete = 0; types = view;} }break; - case DF_GfxViewKind_Procedures: {if(df_view_is_nil(procs)) { needs_delete = 0; procs = view;} }break; - case DF_GfxViewKind_CallStack: {if(df_view_is_nil(callstack)) { needs_delete = 0; callstack = view;} }break; - case DF_GfxViewKind_Breakpoints: {if(df_view_is_nil(breakpoints)) { needs_delete = 0; breakpoints = view;} }break; - case DF_GfxViewKind_WatchPins: {if(df_view_is_nil(watch_pins)) { needs_delete = 0; watch_pins = view;} }break; - case DF_GfxViewKind_Output: {if(df_view_is_nil(output)) { needs_delete = 0; output = view;} }break; - case DF_GfxViewKind_Targets: {if(df_view_is_nil(targets)) { needs_delete = 0; targets = view;} }break; - case DF_GfxViewKind_Scheduler: {if(df_view_is_nil(scheduler)) { needs_delete = 0; scheduler = view;} }break; - case DF_GfxViewKind_Modules: {if(df_view_is_nil(modules)) { needs_delete = 0; modules = view;} }break; - case DF_GfxViewKind_Disassembly: {if(df_view_is_nil(disasm)) { needs_delete = 0; disasm = view;} }break; - case DF_GfxViewKind_Memory: {if(df_view_is_nil(memory)) { needs_delete = 0; memory = view;} }break; + case DF_GfxViewKind_Watch: {if(df_view_is_nil(watch)) { needs_delete = 0; watch = view;} }break; + case DF_GfxViewKind_Locals: {if(df_view_is_nil(locals)) { needs_delete = 0; locals = view;} }break; + case DF_GfxViewKind_Registers: {if(df_view_is_nil(regs)) { needs_delete = 0; regs = view;} }break; + case DF_GfxViewKind_Globals: {if(df_view_is_nil(globals)) { needs_delete = 0; globals = view;} }break; + case DF_GfxViewKind_ThreadLocals: {if(df_view_is_nil(tlocals)) { needs_delete = 0; tlocals = view;} }break; + case DF_GfxViewKind_Types: {if(df_view_is_nil(types)) { needs_delete = 0; types = view;} }break; + case DF_GfxViewKind_Procedures: {if(df_view_is_nil(procs)) { needs_delete = 0; procs = view;} }break; + case DF_GfxViewKind_CallStack: {if(df_view_is_nil(callstack)) { needs_delete = 0; callstack = view;} }break; + case DF_GfxViewKind_Breakpoints: {if(df_view_is_nil(breakpoints)) { needs_delete = 0; breakpoints = view;} }break; + case DF_GfxViewKind_WatchPins: {if(df_view_is_nil(watch_pins)) { needs_delete = 0; watch_pins = view;} }break; + case DF_GfxViewKind_Output: {if(df_view_is_nil(output)) { needs_delete = 0; output = view;} }break; + case DF_GfxViewKind_Targets: {if(df_view_is_nil(targets)) { needs_delete = 0; targets = view;} }break; + case DF_GfxViewKind_Scheduler: {if(df_view_is_nil(scheduler)) { needs_delete = 0; scheduler = view;} }break; + case DF_GfxViewKind_Modules: {if(df_view_is_nil(modules)) { needs_delete = 0; modules = view;} }break; + case DF_GfxViewKind_Disassembly: {if(df_view_is_nil(disasm)) { needs_delete = 0; disasm = view;} }break; + case DF_GfxViewKind_Memory: {if(df_view_is_nil(memory)) { needs_delete = 0; memory = view;} }break; + case DF_GfxViewKind_GettingStarted:{if(df_view_is_nil(getting_started)) { needs_delete = 0; getting_started = view;} }break; case DF_GfxViewKind_Code: { needs_delete = 0; @@ -1450,6 +1452,11 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D memory = df_view_alloc(); df_view_equip_spec(ws, memory, df_view_spec_from_gfx_view_kind(DF_GfxViewKind_Memory), &df_g_nil_entity, str8_lit(""), &df_g_nil_cfg_node); } + if(code_views.count == 0) + { + getting_started = df_view_alloc(); + df_view_equip_spec(ws, getting_started, df_view_spec_from_gfx_view_kind(DF_GfxViewKind_GettingStarted), &df_g_nil_entity, str8_lit(""), &df_g_nil_cfg_node); + } // rjf: root split ws->root_panel->split_axis = Axis2_X; @@ -1530,8 +1537,12 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D root_0_1_1->selected_tab_view = df_handle_from_view(callstack); root_0_1_1->tab_side = Side_Max; - // rjf: fill main panel with all collected code views - for(DF_HandleNode *n = code_views.first; n != 0; n = n->next) + // rjf: fill main panel with getting started, OR all collected code views + if(code_views.count == 0) + { + df_panel_insert_tab_view(root_0_0_1, root_0_0_1->last_tab_view, getting_started); + } + else for(DF_HandleNode *n = code_views.first; n != 0; n = n->next) { DF_View *view = df_view_from_handle(n->handle); if(!df_view_is_nil(view)) @@ -1825,13 +1836,8 @@ df_window_update_and_render(Arena *arena, OS_EventList *events, DF_Window *ws, D { df_panel_remove_tab_view(panel, view); df_view_release(view); - if(df_view_is_nil(panel->first_tab_view)) - { - DF_CmdParams p = df_cmd_params_from_panel(ws, panel); - df_cmd_list_push(arena, cmds, &p, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_ClosePanel)); - } + df_panel_notify_mutation(ws, panel); } - df_panel_notify_mutation(ws, panel); }break; case DF_CoreCmdKind_MoveTab: {