Fixed a bug in the panel split; setup for tutorial

This commit is contained in:
Allen Webster 2019-11-07 20:58:13 -08:00
parent 6e97a504a9
commit cbb707fc27
12 changed files with 217 additions and 121 deletions

View File

@ -1289,11 +1289,9 @@ panel_split(Application_Links *app, Panel_ID panel_id, Dimension split_dim){
Panel *panel = imp_get_panel(models, panel_id); Panel *panel = imp_get_panel(models, panel_id);
if (api_check_panel(panel)){ if (api_check_panel(panel)){
Panel *new_panel = 0; Panel *new_panel = 0;
if (layout_split_panel(layout, panel, (split_dim == Dimension_X), if (layout_split_panel(layout, panel, (split_dim == Dimension_X), &new_panel)){
&new_panel)){
Live_Views *view_set = &models->view_set; Live_Views *view_set = &models->view_set;
View *new_view = live_set_alloc_view(&models->lifetime_allocator, View *new_view = live_set_alloc_view(&models->lifetime_allocator, view_set, new_panel);
view_set, new_panel);
view_init(app->tctx, models, new_view, models->scratch_buffer, view_init(app->tctx, models, new_view, models->scratch_buffer,
models->view_event_handler); models->view_event_handler);
result = true; result = true;
@ -1338,7 +1336,7 @@ panel_set_split(Application_Links *app, Panel_ID panel_id, Panel_Split_Kind kind
} }
api(custom) function b32 api(custom) function b32
panel_swap_children(Application_Links *app, Panel_ID panel_id, Panel_Split_Kind kind, float t){ panel_swap_children(Application_Links *app, Panel_ID panel_id){
Models *models = (Models*)app->cmd_context; Models *models = (Models*)app->cmd_context;
Layout *layout = &models->layout; Layout *layout = &models->layout;
b32 result = false; b32 result = false;
@ -1352,6 +1350,14 @@ panel_swap_children(Application_Links *app, Panel_ID panel_id, Panel_Split_Kind
return(result); return(result);
} }
api(custom) function Panel_ID
panel_get_root(Application_Links *app){
Models *models = (Models*)app->cmd_context;
Layout *layout = &models->layout;
Panel *panel = layout->root;
return(panel_get_id(layout, panel));
}
api(custom) function Panel_ID api(custom) function Panel_ID
panel_get_parent(Application_Links *app, Panel_ID panel_id){ panel_get_parent(Application_Links *app, Panel_ID panel_id){
Models *models = (Models*)app->cmd_context; Models *models = (Models*)app->cmd_context;

View File

@ -155,19 +155,34 @@ layout_split_panel(Layout *layout, Panel *panel, b32 vertical_split, Panel **new
Panel *min_panel = layout__alloc_panel(layout); Panel *min_panel = layout__alloc_panel(layout);
Panel *max_panel = layout__alloc_panel(layout); Panel *max_panel = layout__alloc_panel(layout);
if (panel->kind == PanelKind_Final){
dll_remove(&panel->node); dll_remove(&panel->node);
dll_insert(&layout->intermediate_panels, &panel->node); dll_insert(&layout->intermediate_panels, &panel->node);
dll_insert(&layout->open_panels, &min_panel->node);
dll_insert(&layout->open_panels, &max_panel->node);
// init min_panel // init min_panel
dll_insert(&layout->open_panels, &min_panel->node);
panel->view->panel = min_panel; panel->view->panel = min_panel;
min_panel->parent = panel; min_panel->parent = panel;
min_panel->kind = PanelKind_Final; min_panel->kind = PanelKind_Final;
min_panel->view = panel->view; min_panel->view = panel->view;
}
else{
// init min_panel
dll_insert(&layout->intermediate_panels, &min_panel->node);
min_panel->parent = panel;
min_panel->kind = PanelKind_Intermediate;
min_panel->view = panel->view;
min_panel->tl_panel = panel->tl_panel;
min_panel->br_panel = panel->br_panel;
min_panel->vertical_split = panel->vertical_split;
min_panel->split = panel->split;
}
// init max_panel // init max_panel
dll_insert(&layout->open_panels, &max_panel->node);
*new_panel_out = max_panel; *new_panel_out = max_panel;
max_panel->parent = panel; max_panel->parent = panel;
max_panel->kind = PanelKind_Final; max_panel->kind = PanelKind_Final;

View File

@ -1545,35 +1545,25 @@ CUSTOM_DOC("Set the other non-active panel to view the buffer that the active pa
view_set_cursor_and_preferred_x(app, view, seek_pos(pos)); view_set_cursor_and_preferred_x(app, view, seek_pos(pos));
} }
CUSTOM_COMMAND_SIG(swap_buffers_between_panels) CUSTOM_COMMAND_SIG(swap_panels)
CUSTOM_DOC("Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.") CUSTOM_DOC("Swaps the active panel with it's sibling.")
{ {
View_ID view1 = get_active_view(app, Access_ReadVisible); View_ID view = get_active_view(app, Access_Always);
change_active_panel(app); Panel_ID panel = view_get_panel(app, view);
View_ID view2 = get_active_view(app, Access_ReadVisible); Panel_ID parent = panel_get_parent(app, panel);
for (;parent != 0;){
Panel_ID child_1 = panel_get_child(app, parent, Side_Min);
Panel_ID child_2 = panel_get_child(app, parent, Side_Max);
if (view1 != view2){ View_ID view_1 = panel_get_view(app, child_1, Access_Always);
Buffer_ID buffer1 = view_get_buffer(app, view1, Access_Always); View_ID view_2 = panel_get_view(app, child_2, Access_Always);
Buffer_ID buffer2 = view_get_buffer(app, view2, Access_Always);
if (buffer1 != buffer2){
view_set_buffer(app, view1, buffer2, 0);
view_set_buffer(app, view2, buffer1, 0);
}
else{
i64 p1 = view_get_cursor_pos(app, view1);
i64 m1 = view_get_mark_pos(app, view1);
Buffer_Scroll sc1 = view_get_buffer_scroll(app, view1);
i64 p2 = view_get_cursor_pos(app, view2);
i64 m2 = view_get_mark_pos(app, view2);
Buffer_Scroll sc2 = view_get_buffer_scroll(app, view2);
view_set_cursor_and_preferred_x(app, view1, seek_pos(p2)); if (!view_get_is_passive(app, view_1) && !view_get_is_passive(app, view_2)){
view_set_mark(app, view1, seek_pos(m2)); panel_swap_children(app, parent);
view_set_buffer_scroll(app, view1, sc2, SetBufferScroll_SnapCursorIntoView); break;
view_set_cursor_and_preferred_x(app, view2, seek_pos(p1));
view_set_mark(app, view2, seek_pos(m1));
view_set_buffer_scroll(app, view2, sc1, SetBufferScroll_SnapCursorIntoView);
} }
parent = panel_get_parent(app, parent);
} }
} }

View File

@ -1,16 +1,15 @@
/* /*
4coder_default_framework.cpp - Sets up the basics of the framework that is used for default 4coder_default_framework.cpp - Sets up the basics of the framework that is used for default 4coder behaviour.
4coder behaviour.
*/ */
// TOP // TOP
static void function void
unlock_jump_buffer(void){ unlock_jump_buffer(void){
locked_buffer.size = 0; locked_buffer.size = 0;
} }
static void function void
lock_jump_buffer(Application_Links *app, String_Const_u8 name){ lock_jump_buffer(Application_Links *app, String_Const_u8 name){
if (name.size < sizeof(locked_buffer_space)){ if (name.size < sizeof(locked_buffer_space)){
block_copy(locked_buffer_space, name.str, name.size); block_copy(locked_buffer_space, name.str, name.size);
@ -22,12 +21,12 @@ lock_jump_buffer(Application_Links *app, String_Const_u8 name){
} }
} }
static void function void
lock_jump_buffer(Application_Links *app, char *name, i32 size){ lock_jump_buffer(Application_Links *app, char *name, i32 size){
lock_jump_buffer(app, SCu8(name, size)); lock_jump_buffer(app, SCu8(name, size));
} }
static void function void
lock_jump_buffer(Application_Links *app, Buffer_ID buffer_id){ lock_jump_buffer(Application_Links *app, Buffer_ID buffer_id){
Scratch_Block scratch(app); Scratch_Block scratch(app);
String_Const_u8 buffer_name = push_buffer_unique_name(app, scratch, buffer_id); String_Const_u8 buffer_name = push_buffer_unique_name(app, scratch, buffer_id);
@ -46,7 +45,7 @@ get_locked_jump_buffer(Application_Links *app){
return(result); return(result);
} }
static View_ID function View_ID
get_view_for_locked_jump_buffer(Application_Links *app){ get_view_for_locked_jump_buffer(Application_Links *app){
View_ID result = 0; View_ID result = 0;
Buffer_ID buffer = get_locked_jump_buffer(app); Buffer_ID buffer = get_locked_jump_buffer(app);
@ -58,7 +57,7 @@ get_view_for_locked_jump_buffer(Application_Links *app){
//////////////////////////////// ////////////////////////////////
static void function void
new_view_settings(Application_Links *app, View_ID view){ new_view_settings(Application_Links *app, View_ID view){
if (!global_config.use_scroll_bars){ if (!global_config.use_scroll_bars){
view_set_setting(app, view, ViewSetting_ShowScrollbar, false); view_set_setting(app, view, ViewSetting_ShowScrollbar, false);
@ -70,21 +69,27 @@ new_view_settings(Application_Links *app, View_ID view){
//////////////////////////////// ////////////////////////////////
static void function void
view_set_passive(Application_Links *app, View_ID view_id, b32 value){ view_set_passive(Application_Links *app, View_ID view_id, b32 value){
Managed_Scope scope = view_get_managed_scope(app, view_id); Managed_Scope scope = view_get_managed_scope(app, view_id);
b32 *is_passive = scope_attachment(app, scope, view_is_passive_loc, b32); b32 *is_passive = scope_attachment(app, scope, view_is_passive_loc, b32);
if (is_passive != 0){
*is_passive = value; *is_passive = value;
}
} }
static b32 function b32
view_get_is_passive(Application_Links *app, View_ID view_id){ view_get_is_passive(Application_Links *app, View_ID view_id){
Managed_Scope scope = view_get_managed_scope(app, view_id); Managed_Scope scope = view_get_managed_scope(app, view_id);
b32 *is_passive = scope_attachment(app, scope, view_is_passive_loc, b32); b32 *is_passive = scope_attachment(app, scope, view_is_passive_loc, b32);
return(*is_passive); b32 result = false;
if (is_passive != 0){
result = *is_passive;
}
return(result);
} }
static View_ID function View_ID
open_footer_panel(Application_Links *app, View_ID view){ open_footer_panel(Application_Links *app, View_ID view){
View_ID special_view = open_view(app, view, ViewSplit_Bottom); View_ID special_view = open_view(app, view, ViewSplit_Bottom);
new_view_settings(app, special_view); new_view_settings(app, special_view);
@ -96,7 +101,7 @@ open_footer_panel(Application_Links *app, View_ID view){
return(special_view); return(special_view);
} }
static void function void
close_build_footer_panel(Application_Links *app){ close_build_footer_panel(Application_Links *app){
if (build_footer_panel_view_id != 0){ if (build_footer_panel_view_id != 0){
view_close(app, build_footer_panel_view_id); view_close(app, build_footer_panel_view_id);
@ -104,7 +109,7 @@ close_build_footer_panel(Application_Links *app){
} }
} }
static View_ID function View_ID
open_build_footer_panel(Application_Links *app){ open_build_footer_panel(Application_Links *app){
if (build_footer_panel_view_id == 0){ if (build_footer_panel_view_id == 0){
View_ID view = get_active_view(app, Access_Always); View_ID view = get_active_view(app, Access_Always);
@ -114,7 +119,7 @@ open_build_footer_panel(Application_Links *app){
return(build_footer_panel_view_id); return(build_footer_panel_view_id);
} }
static View_ID function View_ID
get_next_view_looped_primary_panels(Application_Links *app, View_ID start_view_id, Access_Flag access){ get_next_view_looped_primary_panels(Application_Links *app, View_ID start_view_id, Access_Flag access){
View_ID view_id = start_view_id; View_ID view_id = start_view_id;
do{ do{
@ -126,7 +131,7 @@ get_next_view_looped_primary_panels(Application_Links *app, View_ID start_view_i
return(view_id); return(view_id);
} }
static View_ID function View_ID
get_prev_view_looped_primary_panels(Application_Links *app, View_ID start_view_id, Access_Flag access){ get_prev_view_looped_primary_panels(Application_Links *app, View_ID start_view_id, Access_Flag access){
View_ID view_id = start_view_id; View_ID view_id = start_view_id;
do{ do{
@ -138,7 +143,7 @@ get_prev_view_looped_primary_panels(Application_Links *app, View_ID start_view_i
return(view_id); return(view_id);
} }
static View_ID function View_ID
get_next_view_after_active(Application_Links *app, Access_Flag access){ get_next_view_after_active(Application_Links *app, Access_Flag access){
View_ID view = get_active_view(app, access); View_ID view = get_active_view(app, access);
if (view != 0){ if (view != 0){
@ -149,7 +154,7 @@ get_next_view_after_active(Application_Links *app, Access_Flag access){
//////////////////////////////// ////////////////////////////////
static void function void
call_after_ctx_shutdown(Application_Links *app, View_ID view, Custom_Command_Function *func){ call_after_ctx_shutdown(Application_Links *app, View_ID view, Custom_Command_Function *func){
view_enqueue_command_function(app, view, func); view_enqueue_command_function(app, view, func);
} }
@ -213,7 +218,7 @@ ui_fallback_command_dispatch(Application_Links *app, View_ID view, User_Input *i
//////////////////////////////// ////////////////////////////////
static void function void
view_buffer_set(Application_Links *app, Buffer_ID *buffers, i32 *positions, i32 count){ view_buffer_set(Application_Links *app, Buffer_ID *buffers, i32 *positions, i32 count){
if (count > 0){ if (count > 0){
Scratch_Block scratch(app, Scratch_Share); Scratch_Block scratch(app, Scratch_Share);
@ -316,7 +321,7 @@ CUSTOM_DOC("Create a new panel by horizontally splitting the active panel.")
// NOTE(allen): Credits to nj/FlyingSolomon for authoring the original version of this helper. // NOTE(allen): Credits to nj/FlyingSolomon for authoring the original version of this helper.
static Buffer_ID function Buffer_ID
create_or_switch_to_buffer_and_clear_by_name(Application_Links *app, String_Const_u8 name_string, View_ID default_target_view){ create_or_switch_to_buffer_and_clear_by_name(Application_Links *app, String_Const_u8 name_string, View_ID default_target_view){
Buffer_ID search_buffer = get_buffer_by_name(app, name_string, Access_Always); Buffer_ID search_buffer = get_buffer_by_name(app, name_string, Access_Always);
if (search_buffer != 0){ if (search_buffer != 0){
@ -423,7 +428,7 @@ CUSTOM_DOC("Toggle fullscreen mode on or off. The change(s) do not take effect
//////////////////////////////// ////////////////////////////////
static void function void
default_4coder_initialize(Application_Links *app, String_Const_u8_Array file_names, default_4coder_initialize(Application_Links *app, String_Const_u8_Array file_names,
i32 override_font_size, b32 override_hinting){ i32 override_font_size, b32 override_hinting){
Thread_Context *tctx = get_thread_context(app); Thread_Context *tctx = get_thread_context(app);
@ -479,14 +484,14 @@ default_4coder_initialize(Application_Links *app, String_Const_u8_Array file_nam
} }
} }
static void function void
default_4coder_initialize(Application_Links *app, default_4coder_initialize(Application_Links *app,
i32 override_font_size, b32 override_hinting){ i32 override_font_size, b32 override_hinting){
String_Const_u8_Array file_names = {}; String_Const_u8_Array file_names = {};
default_4coder_initialize(app, file_names, override_font_size, override_hinting); default_4coder_initialize(app, file_names, override_font_size, override_hinting);
} }
static void function void
default_4coder_initialize(Application_Links *app, String_Const_u8_Array file_names){ default_4coder_initialize(Application_Links *app, String_Const_u8_Array file_names){
Face_Description description = get_face_description(app, 0); Face_Description description = get_face_description(app, 0);
default_4coder_initialize(app, file_names, default_4coder_initialize(app, file_names,
@ -494,14 +499,14 @@ default_4coder_initialize(Application_Links *app, String_Const_u8_Array file_nam
description.parameters.hinting); description.parameters.hinting);
} }
static void function void
default_4coder_initialize(Application_Links *app){ default_4coder_initialize(Application_Links *app){
Face_Description command_line_description = get_face_description(app, 0); Face_Description command_line_description = get_face_description(app, 0);
String_Const_u8_Array file_names = {}; String_Const_u8_Array file_names = {};
default_4coder_initialize(app, file_names, command_line_description.parameters.pt_size, command_line_description.parameters.hinting); default_4coder_initialize(app, file_names, command_line_description.parameters.pt_size, command_line_description.parameters.hinting);
} }
static void function void
default_4coder_side_by_side_panels(Application_Links *app, default_4coder_side_by_side_panels(Application_Links *app,
Buffer_Identifier left, Buffer_Identifier right){ Buffer_Identifier left, Buffer_Identifier right){
Buffer_ID left_id = buffer_identifier_to_id(app, left); Buffer_ID left_id = buffer_identifier_to_id(app, left);
@ -521,7 +526,7 @@ default_4coder_side_by_side_panels(Application_Links *app,
view_set_active(app, view); view_set_active(app, view);
} }
static void function void
default_4coder_side_by_side_panels(Application_Links *app, default_4coder_side_by_side_panels(Application_Links *app,
Buffer_Identifier left, Buffer_Identifier right, Buffer_Identifier left, Buffer_Identifier right,
String_Const_u8_Array file_names){ String_Const_u8_Array file_names){
@ -534,20 +539,20 @@ default_4coder_side_by_side_panels(Application_Links *app,
default_4coder_side_by_side_panels(app, left, right); default_4coder_side_by_side_panels(app, left, right);
} }
static void function void
default_4coder_side_by_side_panels(Application_Links *app, String_Const_u8_Array file_names){ default_4coder_side_by_side_panels(Application_Links *app, String_Const_u8_Array file_names){
Buffer_Identifier left = buffer_identifier(string_u8_litexpr("*scratch*")); Buffer_Identifier left = buffer_identifier(string_u8_litexpr("*scratch*"));
Buffer_Identifier right = buffer_identifier(string_u8_litexpr("*messages*")); Buffer_Identifier right = buffer_identifier(string_u8_litexpr("*messages*"));
default_4coder_side_by_side_panels(app, left, right, file_names); default_4coder_side_by_side_panels(app, left, right, file_names);
} }
static void function void
default_4coder_side_by_side_panels(Application_Links *app){ default_4coder_side_by_side_panels(Application_Links *app){
String_Const_u8_Array file_names = {}; String_Const_u8_Array file_names = {};
default_4coder_side_by_side_panels(app, file_names); default_4coder_side_by_side_panels(app, file_names);
} }
static void function void
default_4coder_one_panel(Application_Links *app, Buffer_Identifier buffer){ default_4coder_one_panel(Application_Links *app, Buffer_Identifier buffer){
Buffer_ID id = buffer_identifier_to_id(app, buffer); Buffer_ID id = buffer_identifier_to_id(app, buffer);
View_ID view = get_active_view(app, Access_Always); View_ID view = get_active_view(app, Access_Always);
@ -555,7 +560,7 @@ default_4coder_one_panel(Application_Links *app, Buffer_Identifier buffer){
view_set_buffer(app, view, id, 0); view_set_buffer(app, view, id, 0);
} }
static void function void
default_4coder_one_panel(Application_Links *app, String_Const_u8_Array file_names){ default_4coder_one_panel(Application_Links *app, String_Const_u8_Array file_names){
Buffer_Identifier buffer = buffer_identifier(string_u8_litexpr("*messages*")); Buffer_Identifier buffer = buffer_identifier(string_u8_litexpr("*messages*"));
if (file_names.count > 0){ if (file_names.count > 0){
@ -564,7 +569,7 @@ default_4coder_one_panel(Application_Links *app, String_Const_u8_Array file_name
default_4coder_one_panel(app, buffer); default_4coder_one_panel(app, buffer);
} }
static void function void
default_4coder_one_panel(Application_Links *app){ default_4coder_one_panel(Application_Links *app){
String_Const_u8_Array file_names = {}; String_Const_u8_Array file_names = {};
default_4coder_one_panel(app, file_names); default_4coder_one_panel(app, file_names);

View File

@ -91,8 +91,7 @@ CUSTOM_DOC("Input consumption loop for default view behavior")
Buffer_ID buffer = view_get_buffer(app, view, Access_Always); Buffer_ID buffer = view_get_buffer(app, view, Access_Always);
Managed_Scope buffer_scope = buffer_get_managed_scope(app, buffer); Managed_Scope buffer_scope = buffer_get_managed_scope(app, buffer);
Command_Map_ID *map_id_ptr = Command_Map_ID *map_id_ptr = scope_attachment(app, buffer_scope, buffer_map_id, Command_Map_ID);
scope_attachment(app, buffer_scope, buffer_map_id, Command_Map_ID);
if (*map_id_ptr == 0){ if (*map_id_ptr == 0){
*map_id_ptr = mapid_file; *map_id_ptr = mapid_file;
} }
@ -133,8 +132,7 @@ CUSTOM_DOC("Input consumption loop for default view behavior")
// NOTE(allen): after the command is called do some book keeping // NOTE(allen): after the command is called do some book keeping
ProfileScope(app, "after view input"); ProfileScope(app, "after view input");
next_rewrite = scope_attachment(app, scope, view_next_rewrite_loc, next_rewrite = scope_attachment(app, scope, view_next_rewrite_loc, Rewrite_Type);
Rewrite_Type);
if (next_rewrite != 0){ if (next_rewrite != 0){
Rewrite_Type *rewrite = Rewrite_Type *rewrite =
scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type); scope_attachment(app, scope, view_rewrite_loc, Rewrite_Type);
@ -145,8 +143,7 @@ CUSTOM_DOC("Input consumption loop for default view behavior")
view_it = get_view_next(app, view_it, Access_Always)){ view_it = get_view_next(app, view_it, Access_Always)){
Managed_Scope scope_it = view_get_managed_scope(app, view_it); Managed_Scope scope_it = view_get_managed_scope(app, view_it);
b32 *snap_mark_to_cursor = b32 *snap_mark_to_cursor =
scope_attachment(app, scope_it, view_snap_mark_to_cursor, scope_attachment(app, scope_it, view_snap_mark_to_cursor, b32);
b32);
if (*snap_mark_to_cursor){ if (*snap_mark_to_cursor){
i64 pos = view_get_cursor_pos(app, view_it); i64 pos = view_get_cursor_pos(app, view_it);
view_set_mark(app, view_it, seek_pos(pos)); view_set_mark(app, view_it, seek_pos(pos));

View File

@ -105,6 +105,7 @@
#include "4coder_combined_write_commands.cpp" #include "4coder_combined_write_commands.cpp"
#include "4coder_miblo_numbers.cpp" #include "4coder_miblo_numbers.cpp"
#include "4coder_profile_inspect.cpp" #include "4coder_profile_inspect.cpp"
#include "4coder_tutorial.cpp"
#include "4coder_default_hooks.cpp" #include "4coder_default_hooks.cpp"

View File

@ -0,0 +1,63 @@
/*
4coder_tutorial.cpp - Guided graphical tutorial system.
*/
// TOP
global b32 in_tutorial = false;
function void
kill_tutorial(Application_Links *app){
if (in_tutorial){
}
}
function void
tutorial_default_4coder_render(Application_Links *app, Frame_Info frame_info, View_ID view_id){
View_ID active_view = get_active_view(app, Access_Always);
b32 is_active_view = (active_view == view_id);
Rect_f32 region = draw_background_and_margin(app, view_id, is_active_view);
Rect_f32 prev_clip = draw_set_clip(app, region);
draw_rectangle(app, rect_inner(region, 10.f), 20.f, fcolor_id(Stag_Margin));
draw_set_clip(app, prev_clip);
}
function void
tutorial_default_4coder_run(Application_Links *app)
{
View_ID view = get_this_ctx_view(app, Access_Always);
View_Context ctx = view_current_context(app, view);
ctx.render_caller = tutorial_default_4coder_render;
ctx.hides_buffer = true;
View_Context_Block ctx_block(app, view, &ctx);
for (;;){
User_Input input = get_next_input(app, EventPropertyGroup_Any, 0);
if (input.abort){
break;
}
}
}
CUSTOM_COMMAND_SIG(tutorial_default_4coder)
CUSTOM_DOC("Tutorial for built in 4coder bindings and features.")
{
kill_tutorial(app);
Panel_ID root_panel = panel_get_root(app);
if (panel_split(app, root_panel, Dimension_Y)){
panel_swap_children(app, root_panel);
panel_set_split(app, root_panel, PanelSplitKind_Ratio_Min, 0.5f);
Panel_ID tutorial_panel = panel_get_child(app, root_panel, Side_Min);
View_ID tutorial_view = panel_get_view(app, tutorial_panel, Access_Always);
view_set_passive(app, tutorial_view, true);
view_enqueue_command_function(app, tutorial_view, tutorial_default_4coder_run);
}
}
// BOTTOM

View File

@ -2,7 +2,7 @@
#define command_id(c) (fcoder_metacmd_ID_##c) #define command_id(c) (fcoder_metacmd_ID_##c)
#define command_metadata(c) (&fcoder_metacmd_table[command_id(c)]) #define command_metadata(c) (&fcoder_metacmd_table[command_id(c)])
#define command_metadata_by_id(id) (&fcoder_metacmd_table[id]) #define command_metadata_by_id(id) (&fcoder_metacmd_table[id])
#define command_one_past_last_id 214 #define command_one_past_last_id 215
#if defined(CUSTOM_COMMAND_SIG) #if defined(CUSTOM_COMMAND_SIG)
#define PROC_LINKS(x,y) x #define PROC_LINKS(x,y) x
#else #else
@ -118,7 +118,7 @@ CUSTOM_COMMAND_SIG(delete_line);
CUSTOM_COMMAND_SIG(open_file_in_quotes); CUSTOM_COMMAND_SIG(open_file_in_quotes);
CUSTOM_COMMAND_SIG(open_matching_file_cpp); CUSTOM_COMMAND_SIG(open_matching_file_cpp);
CUSTOM_COMMAND_SIG(view_buffer_other_panel); CUSTOM_COMMAND_SIG(view_buffer_other_panel);
CUSTOM_COMMAND_SIG(swap_buffers_between_panels); CUSTOM_COMMAND_SIG(swap_panels);
CUSTOM_COMMAND_SIG(kill_buffer); CUSTOM_COMMAND_SIG(kill_buffer);
CUSTOM_COMMAND_SIG(save); CUSTOM_COMMAND_SIG(save);
CUSTOM_COMMAND_SIG(reopen); CUSTOM_COMMAND_SIG(reopen);
@ -221,6 +221,7 @@ CUSTOM_COMMAND_SIG(miblo_decrement_time_stamp);
CUSTOM_COMMAND_SIG(miblo_increment_time_stamp_minute); CUSTOM_COMMAND_SIG(miblo_increment_time_stamp_minute);
CUSTOM_COMMAND_SIG(miblo_decrement_time_stamp_minute); CUSTOM_COMMAND_SIG(miblo_decrement_time_stamp_minute);
CUSTOM_COMMAND_SIG(profile_inspect); CUSTOM_COMMAND_SIG(profile_inspect);
CUSTOM_COMMAND_SIG(tutorial_default_4coder);
CUSTOM_COMMAND_SIG(default_startup); CUSTOM_COMMAND_SIG(default_startup);
CUSTOM_COMMAND_SIG(default_try_exit); CUSTOM_COMMAND_SIG(default_try_exit);
#endif #endif
@ -235,7 +236,7 @@ char *source_name;
i32 source_name_len; i32 source_name_len;
i32 line_number; i32 line_number;
}; };
static Command_Metadata fcoder_metacmd_table[214] = { static Command_Metadata fcoder_metacmd_table[215] = {
{ PROC_LINKS(default_view_input_handler, 0), false, "default_view_input_handler", 26, "Input consumption loop for default view behavior", 48, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 56 }, { PROC_LINKS(default_view_input_handler, 0), false, "default_view_input_handler", 26, "Input consumption loop for default view behavior", 48, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 56 },
{ PROC_LINKS(profile_enable, 0), false, "profile_enable", 14, "Allow 4coder's self profiler to gather new profiling information.", 65, "w:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 207 }, { PROC_LINKS(profile_enable, 0), false, "profile_enable", 14, "Allow 4coder's self profiler to gather new profiling information.", 65, "w:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 207 },
{ PROC_LINKS(profile_disable, 0), false, "profile_disable", 15, "Prevent 4coder's self profiler from gathering new profiling information.", 72, "w:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 214 }, { PROC_LINKS(profile_disable, 0), false, "profile_disable", 15, "Prevent 4coder's self profiler from gathering new profiling information.", 72, "w:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 214 },
@ -246,19 +247,19 @@ static Command_Metadata fcoder_metacmd_table[214] = {
{ PROC_LINKS(seek_end_of_line, 0), false, "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2175 }, { PROC_LINKS(seek_end_of_line, 0), false, "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2175 },
{ PROC_LINKS(goto_beginning_of_file, 0), false, "goto_beginning_of_file", 22, "Sets the cursor to the beginning of the file.", 45, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2181 }, { PROC_LINKS(goto_beginning_of_file, 0), false, "goto_beginning_of_file", 22, "Sets the cursor to the beginning of the file.", 45, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2181 },
{ PROC_LINKS(goto_end_of_file, 0), false, "goto_end_of_file", 16, "Sets the cursor to the end of the file.", 39, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2189 }, { PROC_LINKS(goto_end_of_file, 0), false, "goto_end_of_file", 16, "Sets the cursor to the end of the file.", 39, "w:\\4ed\\code\\custom\\4coder_helper.cpp", 36, 2189 },
{ PROC_LINKS(change_active_panel, 0), false, "change_active_panel", 19, "Change the currently active panel, moving to the panel with the next highest view_id.", 85, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 279 }, { PROC_LINKS(change_active_panel, 0), false, "change_active_panel", 19, "Change the currently active panel, moving to the panel with the next highest view_id.", 85, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 284 },
{ PROC_LINKS(change_active_panel_backwards, 0), false, "change_active_panel_backwards", 29, "Change the currently active panel, moving to the panel with the next lowest view_id.", 84, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 285 }, { PROC_LINKS(change_active_panel_backwards, 0), false, "change_active_panel_backwards", 29, "Change the currently active panel, moving to the panel with the next lowest view_id.", 84, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 290 },
{ PROC_LINKS(open_panel_vsplit, 0), false, "open_panel_vsplit", 17, "Create a new panel by vertically splitting the active panel.", 60, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 295 }, { PROC_LINKS(open_panel_vsplit, 0), false, "open_panel_vsplit", 17, "Create a new panel by vertically splitting the active panel.", 60, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 300 },
{ PROC_LINKS(open_panel_hsplit, 0), false, "open_panel_hsplit", 17, "Create a new panel by horizontally splitting the active panel.", 62, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 305 }, { PROC_LINKS(open_panel_hsplit, 0), false, "open_panel_hsplit", 17, "Create a new panel by horizontally splitting the active panel.", 62, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 310 },
{ PROC_LINKS(suppress_mouse, 0), false, "suppress_mouse", 14, "Hides the mouse and causes all mosue input (clicks, position, wheel) to be ignored.", 83, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 370 }, { PROC_LINKS(suppress_mouse, 0), false, "suppress_mouse", 14, "Hides the mouse and causes all mosue input (clicks, position, wheel) to be ignored.", 83, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 375 },
{ PROC_LINKS(allow_mouse, 0), false, "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 376 }, { PROC_LINKS(allow_mouse, 0), false, "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 381 },
{ PROC_LINKS(toggle_mouse, 0), false, "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 382 }, { PROC_LINKS(toggle_mouse, 0), false, "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 387 },
{ PROC_LINKS(set_mode_to_original, 0), false, "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 388 }, { PROC_LINKS(set_mode_to_original, 0), false, "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 393 },
{ PROC_LINKS(set_mode_to_notepad_like, 0), false, "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 394 }, { PROC_LINKS(set_mode_to_notepad_like, 0), false, "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 399 },
{ PROC_LINKS(toggle_highlight_line_at_cursor, 0), false, "toggle_highlight_line_at_cursor", 31, "Toggles the line highlight at the cursor.", 41, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 400 }, { PROC_LINKS(toggle_highlight_line_at_cursor, 0), false, "toggle_highlight_line_at_cursor", 31, "Toggles the line highlight at the cursor.", 41, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 405 },
{ PROC_LINKS(toggle_highlight_enclosing_scopes, 0), false, "toggle_highlight_enclosing_scopes", 33, "In code files scopes surrounding the cursor are highlighted with distinguishing colors.", 87, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 406 }, { PROC_LINKS(toggle_highlight_enclosing_scopes, 0), false, "toggle_highlight_enclosing_scopes", 33, "In code files scopes surrounding the cursor are highlighted with distinguishing colors.", 87, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 411 },
{ PROC_LINKS(toggle_paren_matching_helper, 0), false, "toggle_paren_matching_helper", 28, "In code files matching parentheses pairs are colored with distinguishing colors.", 80, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 412 }, { PROC_LINKS(toggle_paren_matching_helper, 0), false, "toggle_paren_matching_helper", 28, "In code files matching parentheses pairs are colored with distinguishing colors.", 80, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 417 },
{ PROC_LINKS(toggle_fullscreen, 0), false, "toggle_fullscreen", 17, "Toggle fullscreen mode on or off. The change(s) do not take effect until the next frame.", 89, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 418 }, { PROC_LINKS(toggle_fullscreen, 0), false, "toggle_fullscreen", 17, "Toggle fullscreen mode on or off. The change(s) do not take effect until the next frame.", 89, "w:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 423 },
{ PROC_LINKS(write_text_input, 0), false, "write_text_input", 16, "Inserts whatever character was used to trigger this command.", 60, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 59 }, { PROC_LINKS(write_text_input, 0), false, "write_text_input", 16, "Inserts whatever character was used to trigger this command.", 60, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 59 },
{ PROC_LINKS(write_space, 0), false, "write_space", 11, "Inserts an underscore.", 22, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 67 }, { PROC_LINKS(write_space, 0), false, "write_space", 11, "Inserts an underscore.", 22, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 67 },
{ PROC_LINKS(write_underscore, 0), false, "write_underscore", 16, "Inserts an underscore.", 22, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 73 }, { PROC_LINKS(write_underscore, 0), false, "write_underscore", 16, "Inserts an underscore.", 22, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 73 },
@ -345,16 +346,16 @@ static Command_Metadata fcoder_metacmd_table[214] = {
{ PROC_LINKS(open_file_in_quotes, 0), false, "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1491 }, { PROC_LINKS(open_file_in_quotes, 0), false, "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1491 },
{ PROC_LINKS(open_matching_file_cpp, 0), false, "open_matching_file_cpp", 22, "If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.", 110, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1523 }, { PROC_LINKS(open_matching_file_cpp, 0), false, "open_matching_file_cpp", 22, "If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.", 110, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1523 },
{ PROC_LINKS(view_buffer_other_panel, 0), false, "view_buffer_other_panel", 23, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1536 }, { PROC_LINKS(view_buffer_other_panel, 0), false, "view_buffer_other_panel", 23, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1536 },
{ PROC_LINKS(swap_buffers_between_panels, 0), false, "swap_buffers_between_panels", 27, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1548 }, { PROC_LINKS(swap_panels, 0), false, "swap_panels", 11, "Swaps the active panel with it's sibling.", 41, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1548 },
{ PROC_LINKS(kill_buffer, 0), false, "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1582 }, { PROC_LINKS(kill_buffer, 0), false, "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1572 },
{ PROC_LINKS(save, 0), false, "save", 4, "Saves the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1590 }, { PROC_LINKS(save, 0), false, "save", 4, "Saves the current buffer.", 25, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1580 },
{ PROC_LINKS(reopen, 0), false, "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1600 }, { PROC_LINKS(reopen, 0), false, "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1590 },
{ PROC_LINKS(undo, 0), false, "undo", 4, "Advances backwards through the undo history of the current buffer.", 66, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1825 }, { PROC_LINKS(undo, 0), false, "undo", 4, "Advances backwards through the undo history of the current buffer.", 66, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1815 },
{ PROC_LINKS(redo, 0), false, "redo", 4, "Advances forwards through the undo history of the current buffer.", 65, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1838 }, { PROC_LINKS(redo, 0), false, "redo", 4, "Advances forwards through the undo history of the current buffer.", 65, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1828 },
{ PROC_LINKS(undo_all_buffers, 0), false, "undo_all_buffers", 16, "Advances backward through the undo history in the buffer containing the most recent regular edit.", 97, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1852 }, { PROC_LINKS(undo_all_buffers, 0), false, "undo_all_buffers", 16, "Advances backward through the undo history in the buffer containing the most recent regular edit.", 97, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1842 },
{ PROC_LINKS(redo_all_buffers, 0), false, "redo_all_buffers", 16, "Advances forward through the undo history in the buffer containing the most recent regular edit.", 96, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1923 }, { PROC_LINKS(redo_all_buffers, 0), false, "redo_all_buffers", 16, "Advances forward through the undo history in the buffer containing the most recent regular edit.", 96, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1913 },
{ PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2024 }, { PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2014 },
{ PROC_LINKS(default_file_externally_modified, 0), false, "default_file_externally_modified", 32, "Notes the external modification of attached files by printing a message.", 72, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2030 }, { PROC_LINKS(default_file_externally_modified, 0), false, "default_file_externally_modified", 32, "Notes the external modification of attached files by printing a message.", 72, "w:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2020 },
{ PROC_LINKS(set_eol_mode_to_crlf, 0), false, "set_eol_mode_to_crlf", 20, "Puts the buffer in crlf line ending mode.", 41, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 86 }, { PROC_LINKS(set_eol_mode_to_crlf, 0), false, "set_eol_mode_to_crlf", 20, "Puts the buffer in crlf line ending mode.", 41, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 86 },
{ PROC_LINKS(set_eol_mode_to_lf, 0), false, "set_eol_mode_to_lf", 18, "Puts the buffer in lf line ending mode.", 39, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 97 }, { PROC_LINKS(set_eol_mode_to_lf, 0), false, "set_eol_mode_to_lf", 18, "Puts the buffer in lf line ending mode.", 39, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 97 },
{ PROC_LINKS(set_eol_mode_to_binary, 0), false, "set_eol_mode_to_binary", 22, "Puts the buffer in bin line ending mode.", 40, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 108 }, { PROC_LINKS(set_eol_mode_to_binary, 0), false, "set_eol_mode_to_binary", 22, "Puts the buffer in bin line ending mode.", 40, "w:\\4ed\\code\\custom\\4coder_eol.cpp", 33, 108 },
@ -448,6 +449,7 @@ static Command_Metadata fcoder_metacmd_table[214] = {
{ PROC_LINKS(miblo_increment_time_stamp_minute, 0), false, "miblo_increment_time_stamp_minute", 33, "Increment a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 243 }, { PROC_LINKS(miblo_increment_time_stamp_minute, 0), false, "miblo_increment_time_stamp_minute", 33, "Increment a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 243 },
{ PROC_LINKS(miblo_decrement_time_stamp_minute, 0), false, "miblo_decrement_time_stamp_minute", 33, "Decrement a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 249 }, { PROC_LINKS(miblo_decrement_time_stamp_minute, 0), false, "miblo_decrement_time_stamp_minute", 33, "Decrement a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\custom\\4coder_miblo_numbers.cpp", 43, 249 },
{ PROC_LINKS(profile_inspect, 0), true, "profile_inspect", 15, "Inspect all currently collected profiling information in 4coder's self profiler.", 80, "w:\\4ed\\code\\custom\\4coder_profile_inspect.cpp", 45, 779 }, { PROC_LINKS(profile_inspect, 0), true, "profile_inspect", 15, "Inspect all currently collected profiling information in 4coder's self profiler.", 80, "w:\\4ed\\code\\custom\\4coder_profile_inspect.cpp", 45, 779 },
{ PROC_LINKS(tutorial_default_4coder, 0), false, "tutorial_default_4coder", 23, "Tutorial for built in 4coder bindings and features.", 51, "w:\\4ed\\code\\custom\\4coder_tutorial.cpp", 38, 46 },
{ PROC_LINKS(default_startup, 0), false, "default_startup", 15, "Default command for responding to a startup event", 49, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 7 }, { PROC_LINKS(default_startup, 0), false, "default_startup", 15, "Default command for responding to a startup event", 49, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 7 },
{ PROC_LINKS(default_try_exit, 0), false, "default_try_exit", 16, "Default command for responding to a try-exit event", 50, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 22 }, { PROC_LINKS(default_try_exit, 0), false, "default_try_exit", 16, "Default command for responding to a try-exit event", 50, "w:\\4ed\\code\\custom\\4coder_default_hooks.cpp", 43, 22 },
}; };
@ -560,7 +562,7 @@ static i32 fcoder_metacmd_ID_delete_line = 105;
static i32 fcoder_metacmd_ID_open_file_in_quotes = 106; static i32 fcoder_metacmd_ID_open_file_in_quotes = 106;
static i32 fcoder_metacmd_ID_open_matching_file_cpp = 107; static i32 fcoder_metacmd_ID_open_matching_file_cpp = 107;
static i32 fcoder_metacmd_ID_view_buffer_other_panel = 108; static i32 fcoder_metacmd_ID_view_buffer_other_panel = 108;
static i32 fcoder_metacmd_ID_swap_buffers_between_panels = 109; static i32 fcoder_metacmd_ID_swap_panels = 109;
static i32 fcoder_metacmd_ID_kill_buffer = 110; static i32 fcoder_metacmd_ID_kill_buffer = 110;
static i32 fcoder_metacmd_ID_save = 111; static i32 fcoder_metacmd_ID_save = 111;
static i32 fcoder_metacmd_ID_reopen = 112; static i32 fcoder_metacmd_ID_reopen = 112;
@ -663,6 +665,7 @@ static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 208;
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 209; static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 209;
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 210; static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 210;
static i32 fcoder_metacmd_ID_profile_inspect = 211; static i32 fcoder_metacmd_ID_profile_inspect = 211;
static i32 fcoder_metacmd_ID_default_startup = 212; static i32 fcoder_metacmd_ID_tutorial_default_4coder = 212;
static i32 fcoder_metacmd_ID_default_try_exit = 213; static i32 fcoder_metacmd_ID_default_startup = 213;
static i32 fcoder_metacmd_ID_default_try_exit = 214;
#endif #endif

View File

@ -74,6 +74,7 @@ vtable->panel_is_leaf = panel_is_leaf;
vtable->panel_split = panel_split; vtable->panel_split = panel_split;
vtable->panel_set_split = panel_set_split; vtable->panel_set_split = panel_set_split;
vtable->panel_swap_children = panel_swap_children; vtable->panel_swap_children = panel_swap_children;
vtable->panel_get_root = panel_get_root;
vtable->panel_get_parent = panel_get_parent; vtable->panel_get_parent = panel_get_parent;
vtable->panel_get_child = panel_get_child; vtable->panel_get_child = panel_get_child;
vtable->panel_get_max = panel_get_max; vtable->panel_get_max = panel_get_max;
@ -91,6 +92,7 @@ vtable->view_compute_cursor = view_compute_cursor;
vtable->view_set_cursor = view_set_cursor; vtable->view_set_cursor = view_set_cursor;
vtable->view_set_buffer_scroll = view_set_buffer_scroll; vtable->view_set_buffer_scroll = view_set_buffer_scroll;
vtable->view_set_mark = view_set_mark; vtable->view_set_mark = view_set_mark;
vtable->view_quit_ui = view_quit_ui;
vtable->view_set_buffer = view_set_buffer; vtable->view_set_buffer = view_set_buffer;
vtable->view_post_fade = view_post_fade; vtable->view_post_fade = view_post_fade;
vtable->view_push_context = view_push_context; vtable->view_push_context = view_push_context;
@ -255,6 +257,7 @@ panel_is_leaf = vtable->panel_is_leaf;
panel_split = vtable->panel_split; panel_split = vtable->panel_split;
panel_set_split = vtable->panel_set_split; panel_set_split = vtable->panel_set_split;
panel_swap_children = vtable->panel_swap_children; panel_swap_children = vtable->panel_swap_children;
panel_get_root = vtable->panel_get_root;
panel_get_parent = vtable->panel_get_parent; panel_get_parent = vtable->panel_get_parent;
panel_get_child = vtable->panel_get_child; panel_get_child = vtable->panel_get_child;
panel_get_max = vtable->panel_get_max; panel_get_max = vtable->panel_get_max;
@ -272,6 +275,7 @@ view_compute_cursor = vtable->view_compute_cursor;
view_set_cursor = vtable->view_set_cursor; view_set_cursor = vtable->view_set_cursor;
view_set_buffer_scroll = vtable->view_set_buffer_scroll; view_set_buffer_scroll = vtable->view_set_buffer_scroll;
view_set_mark = vtable->view_set_mark; view_set_mark = vtable->view_set_mark;
view_quit_ui = vtable->view_quit_ui;
view_set_buffer = vtable->view_set_buffer; view_set_buffer = vtable->view_set_buffer;
view_post_fade = vtable->view_post_fade; view_post_fade = vtable->view_post_fade;
view_push_context = vtable->view_push_context; view_push_context = vtable->view_push_context;

View File

@ -71,7 +71,8 @@
#define custom_panel_is_leaf_sig() b32 custom_panel_is_leaf(Application_Links* app, Panel_ID panel_id) #define custom_panel_is_leaf_sig() b32 custom_panel_is_leaf(Application_Links* app, Panel_ID panel_id)
#define custom_panel_split_sig() b32 custom_panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim) #define custom_panel_split_sig() b32 custom_panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim)
#define custom_panel_set_split_sig() b32 custom_panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t) #define custom_panel_set_split_sig() b32 custom_panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t)
#define custom_panel_swap_children_sig() b32 custom_panel_swap_children(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t) #define custom_panel_swap_children_sig() b32 custom_panel_swap_children(Application_Links* app, Panel_ID panel_id)
#define custom_panel_get_root_sig() Panel_ID custom_panel_get_root(Application_Links* app)
#define custom_panel_get_parent_sig() Panel_ID custom_panel_get_parent(Application_Links* app, Panel_ID panel_id) #define custom_panel_get_parent_sig() Panel_ID custom_panel_get_parent(Application_Links* app, Panel_ID panel_id)
#define custom_panel_get_child_sig() Panel_ID custom_panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child) #define custom_panel_get_child_sig() Panel_ID custom_panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child)
#define custom_panel_get_max_sig() Panel_ID custom_panel_get_max(Application_Links* app, Panel_ID panel_id) #define custom_panel_get_max_sig() Panel_ID custom_panel_get_max(Application_Links* app, Panel_ID panel_id)
@ -89,6 +90,7 @@
#define custom_view_set_cursor_sig() b32 custom_view_set_cursor(Application_Links* app, View_ID view_id, Buffer_Seek seek) #define custom_view_set_cursor_sig() b32 custom_view_set_cursor(Application_Links* app, View_ID view_id, Buffer_Seek seek)
#define custom_view_set_buffer_scroll_sig() b32 custom_view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule) #define custom_view_set_buffer_scroll_sig() b32 custom_view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule)
#define custom_view_set_mark_sig() b32 custom_view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek) #define custom_view_set_mark_sig() b32 custom_view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek)
#define custom_view_quit_ui_sig() b32 custom_view_quit_ui(Application_Links* app, View_ID view_id)
#define custom_view_set_buffer_sig() b32 custom_view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags) #define custom_view_set_buffer_sig() b32 custom_view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags)
#define custom_view_post_fade_sig() b32 custom_view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color) #define custom_view_post_fade_sig() b32 custom_view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color)
#define custom_view_push_context_sig() b32 custom_view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx) #define custom_view_push_context_sig() b32 custom_view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx)
@ -248,7 +250,8 @@ typedef b32 custom_panel_is_split_type(Application_Links* app, Panel_ID panel_id
typedef b32 custom_panel_is_leaf_type(Application_Links* app, Panel_ID panel_id); typedef b32 custom_panel_is_leaf_type(Application_Links* app, Panel_ID panel_id);
typedef b32 custom_panel_split_type(Application_Links* app, Panel_ID panel_id, Dimension split_dim); typedef b32 custom_panel_split_type(Application_Links* app, Panel_ID panel_id, Dimension split_dim);
typedef b32 custom_panel_set_split_type(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t); typedef b32 custom_panel_set_split_type(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t);
typedef b32 custom_panel_swap_children_type(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); typedef b32 custom_panel_swap_children_type(Application_Links* app, Panel_ID panel_id);
typedef Panel_ID custom_panel_get_root_type(Application_Links* app);
typedef Panel_ID custom_panel_get_parent_type(Application_Links* app, Panel_ID panel_id); typedef Panel_ID custom_panel_get_parent_type(Application_Links* app, Panel_ID panel_id);
typedef Panel_ID custom_panel_get_child_type(Application_Links* app, Panel_ID panel_id, Side which_child); typedef Panel_ID custom_panel_get_child_type(Application_Links* app, Panel_ID panel_id, Side which_child);
typedef Panel_ID custom_panel_get_max_type(Application_Links* app, Panel_ID panel_id); typedef Panel_ID custom_panel_get_max_type(Application_Links* app, Panel_ID panel_id);
@ -266,6 +269,7 @@ typedef Buffer_Cursor custom_view_compute_cursor_type(Application_Links* app, Vi
typedef b32 custom_view_set_cursor_type(Application_Links* app, View_ID view_id, Buffer_Seek seek); typedef b32 custom_view_set_cursor_type(Application_Links* app, View_ID view_id, Buffer_Seek seek);
typedef b32 custom_view_set_buffer_scroll_type(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule); typedef b32 custom_view_set_buffer_scroll_type(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule);
typedef b32 custom_view_set_mark_type(Application_Links* app, View_ID view_id, Buffer_Seek seek); typedef b32 custom_view_set_mark_type(Application_Links* app, View_ID view_id, Buffer_Seek seek);
typedef b32 custom_view_quit_ui_type(Application_Links* app, View_ID view_id);
typedef b32 custom_view_set_buffer_type(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags); typedef b32 custom_view_set_buffer_type(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags);
typedef b32 custom_view_post_fade_type(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color); typedef b32 custom_view_post_fade_type(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color);
typedef b32 custom_view_push_context_type(Application_Links* app, View_ID view_id, View_Context* ctx); typedef b32 custom_view_push_context_type(Application_Links* app, View_ID view_id, View_Context* ctx);
@ -427,6 +431,7 @@ custom_panel_is_leaf_type *panel_is_leaf;
custom_panel_split_type *panel_split; custom_panel_split_type *panel_split;
custom_panel_set_split_type *panel_set_split; custom_panel_set_split_type *panel_set_split;
custom_panel_swap_children_type *panel_swap_children; custom_panel_swap_children_type *panel_swap_children;
custom_panel_get_root_type *panel_get_root;
custom_panel_get_parent_type *panel_get_parent; custom_panel_get_parent_type *panel_get_parent;
custom_panel_get_child_type *panel_get_child; custom_panel_get_child_type *panel_get_child;
custom_panel_get_max_type *panel_get_max; custom_panel_get_max_type *panel_get_max;
@ -444,6 +449,7 @@ custom_view_compute_cursor_type *view_compute_cursor;
custom_view_set_cursor_type *view_set_cursor; custom_view_set_cursor_type *view_set_cursor;
custom_view_set_buffer_scroll_type *view_set_buffer_scroll; custom_view_set_buffer_scroll_type *view_set_buffer_scroll;
custom_view_set_mark_type *view_set_mark; custom_view_set_mark_type *view_set_mark;
custom_view_quit_ui_type *view_quit_ui;
custom_view_set_buffer_type *view_set_buffer; custom_view_set_buffer_type *view_set_buffer;
custom_view_post_fade_type *view_post_fade; custom_view_post_fade_type *view_post_fade;
custom_view_push_context_type *view_push_context; custom_view_push_context_type *view_push_context;
@ -605,7 +611,8 @@ internal b32 panel_is_split(Application_Links* app, Panel_ID panel_id);
internal b32 panel_is_leaf(Application_Links* app, Panel_ID panel_id); internal b32 panel_is_leaf(Application_Links* app, Panel_ID panel_id);
internal b32 panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim); internal b32 panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim);
internal b32 panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t); internal b32 panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t);
internal b32 panel_swap_children(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); internal b32 panel_swap_children(Application_Links* app, Panel_ID panel_id);
internal Panel_ID panel_get_root(Application_Links* app);
internal Panel_ID panel_get_parent(Application_Links* app, Panel_ID panel_id); internal Panel_ID panel_get_parent(Application_Links* app, Panel_ID panel_id);
internal Panel_ID panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child); internal Panel_ID panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child);
internal Panel_ID panel_get_max(Application_Links* app, Panel_ID panel_id); internal Panel_ID panel_get_max(Application_Links* app, Panel_ID panel_id);
@ -623,6 +630,7 @@ internal Buffer_Cursor view_compute_cursor(Application_Links* app, View_ID view_
internal b32 view_set_cursor(Application_Links* app, View_ID view_id, Buffer_Seek seek); internal b32 view_set_cursor(Application_Links* app, View_ID view_id, Buffer_Seek seek);
internal b32 view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule); internal b32 view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule);
internal b32 view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek); internal b32 view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek);
internal b32 view_quit_ui(Application_Links* app, View_ID view_id);
internal b32 view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags); internal b32 view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags);
internal b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color); internal b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color);
internal b32 view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx); internal b32 view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx);
@ -785,6 +793,7 @@ global custom_panel_is_leaf_type *panel_is_leaf = 0;
global custom_panel_split_type *panel_split = 0; global custom_panel_split_type *panel_split = 0;
global custom_panel_set_split_type *panel_set_split = 0; global custom_panel_set_split_type *panel_set_split = 0;
global custom_panel_swap_children_type *panel_swap_children = 0; global custom_panel_swap_children_type *panel_swap_children = 0;
global custom_panel_get_root_type *panel_get_root = 0;
global custom_panel_get_parent_type *panel_get_parent = 0; global custom_panel_get_parent_type *panel_get_parent = 0;
global custom_panel_get_child_type *panel_get_child = 0; global custom_panel_get_child_type *panel_get_child = 0;
global custom_panel_get_max_type *panel_get_max = 0; global custom_panel_get_max_type *panel_get_max = 0;
@ -802,6 +811,7 @@ global custom_view_compute_cursor_type *view_compute_cursor = 0;
global custom_view_set_cursor_type *view_set_cursor = 0; global custom_view_set_cursor_type *view_set_cursor = 0;
global custom_view_set_buffer_scroll_type *view_set_buffer_scroll = 0; global custom_view_set_buffer_scroll_type *view_set_buffer_scroll = 0;
global custom_view_set_mark_type *view_set_mark = 0; global custom_view_set_mark_type *view_set_mark = 0;
global custom_view_quit_ui_type *view_quit_ui = 0;
global custom_view_set_buffer_type *view_set_buffer = 0; global custom_view_set_buffer_type *view_set_buffer = 0;
global custom_view_post_fade_type *view_post_fade = 0; global custom_view_post_fade_type *view_post_fade = 0;
global custom_view_push_context_type *view_push_context = 0; global custom_view_push_context_type *view_push_context = 0;

View File

@ -71,7 +71,8 @@ api(custom) function b32 panel_is_split(Application_Links* app, Panel_ID panel_i
api(custom) function b32 panel_is_leaf(Application_Links* app, Panel_ID panel_id); api(custom) function b32 panel_is_leaf(Application_Links* app, Panel_ID panel_id);
api(custom) function b32 panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim); api(custom) function b32 panel_split(Application_Links* app, Panel_ID panel_id, Dimension split_dim);
api(custom) function b32 panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t); api(custom) function b32 panel_set_split(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, f32 t);
api(custom) function b32 panel_swap_children(Application_Links* app, Panel_ID panel_id, Panel_Split_Kind kind, float t); api(custom) function b32 panel_swap_children(Application_Links* app, Panel_ID panel_id);
api(custom) function Panel_ID panel_get_root(Application_Links* app);
api(custom) function Panel_ID panel_get_parent(Application_Links* app, Panel_ID panel_id); api(custom) function Panel_ID panel_get_parent(Application_Links* app, Panel_ID panel_id);
api(custom) function Panel_ID panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child); api(custom) function Panel_ID panel_get_child(Application_Links* app, Panel_ID panel_id, Side which_child);
api(custom) function Panel_ID panel_get_max(Application_Links* app, Panel_ID panel_id); api(custom) function Panel_ID panel_get_max(Application_Links* app, Panel_ID panel_id);
@ -89,6 +90,7 @@ api(custom) function Buffer_Cursor view_compute_cursor(Application_Links* app, V
api(custom) function b32 view_set_cursor(Application_Links* app, View_ID view_id, Buffer_Seek seek); api(custom) function b32 view_set_cursor(Application_Links* app, View_ID view_id, Buffer_Seek seek);
api(custom) function b32 view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule); api(custom) function b32 view_set_buffer_scroll(Application_Links* app, View_ID view_id, Buffer_Scroll scroll, Set_Buffer_Scroll_Rule rule);
api(custom) function b32 view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek); api(custom) function b32 view_set_mark(Application_Links* app, View_ID view_id, Buffer_Seek seek);
api(custom) function b32 view_quit_ui(Application_Links* app, View_ID view_id);
api(custom) function b32 view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags); api(custom) function b32 view_set_buffer(Application_Links* app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags);
api(custom) function b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color); api(custom) function b32 view_post_fade(Application_Links* app, View_ID view_id, f32 seconds, Range_i64 range, FColor color);
api(custom) function b32 view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx); api(custom) function b32 view_push_context(Application_Links* app, View_ID view_id, View_Context* ctx);

View File

@ -113,7 +113,7 @@ setup_default_mapping(Mapping *mapping){
Bind(redo, KeyCode_Y, KeyCode_Control); Bind(redo, KeyCode_Y, KeyCode_Control);
Bind(undo, KeyCode_Z, KeyCode_Control); Bind(undo, KeyCode_Z, KeyCode_Control);
Bind(view_buffer_other_panel, KeyCode_1, KeyCode_Control); Bind(view_buffer_other_panel, KeyCode_1, KeyCode_Control);
Bind(swap_buffers_between_panels, KeyCode_2, KeyCode_Control); Bind(swap_panels, KeyCode_2, KeyCode_Control);
Bind(if_read_only_goto_position, KeyCode_Return); Bind(if_read_only_goto_position, KeyCode_Return);
Bind(if_read_only_goto_position_same_panel, KeyCode_Return, KeyCode_Shift); Bind(if_read_only_goto_position_same_panel, KeyCode_Return, KeyCode_Shift);
Bind(view_jump_list_with_lister, KeyCode_Period, KeyCode_Control, KeyCode_Shift); Bind(view_jump_list_with_lister, KeyCode_Period, KeyCode_Control, KeyCode_Shift);