removed try_kill from the dact system

This commit is contained in:
Allen Webster 2016-05-29 17:34:52 -04:00
parent 5138d565d8
commit 5275ac5823
5 changed files with 79 additions and 54 deletions

42
4ed.cpp
View File

@ -969,12 +969,10 @@ COMMAND_DECL(interactive_kill_buffer){
} }
COMMAND_DECL(kill_buffer){ COMMAND_DECL(kill_buffer){
USE_MODELS(models); USE_MODELS(models);
USE_VIEW(view); USE_VIEW(view);
USE_FILE(file, view); USE_FILE(file, view);
Delay *delay = &models->delay1;
int buffer_id = 0; int buffer_id = 0;
Command_Parameter *end = param_stack_end(&command->part); Command_Parameter *end = param_stack_end(&command->part);
@ -993,7 +991,8 @@ COMMAND_DECL(kill_buffer){
} }
} }
else if (file){ else if (file){
delayed_try_kill(delay, file, view->panel); try_kill_file(system, models,
file, view, string_zero());
} }
} }
@ -3128,6 +3127,7 @@ App_Init_Sig(app_init){
vars = (App_Vars*)memory->vars_memory; vars = (App_Vars*)memory->vars_memory;
models = &vars->models; models = &vars->models;
models->keep_playing = 1;
app_links_init(system, &models->app_links, memory->user_memory, memory->user_memory_size); app_links_init(system, &models->app_links, memory->user_memory, memory->user_memory_size);
@ -4374,41 +4374,21 @@ App_Step_Sig(app_step){
}break; }break;
#endif #endif
#if 0
case DACT_TRY_KILL: case DACT_TRY_KILL:
{ {
View *view = 0;
if (panel){
view = panel->view;
}
else{
view = (models->layout.panels + models->layout.active_panel)->view;
}
if (!file && string.str){
file = working_set_lookup_file(working_set, string);
if (!file){
file = working_set_contains(system, working_set, string);
}
}
if (file && !file->settings.never_kill){
if (buffer_needs_save(file)){
view_show_interactive(system, view, &models->map_ui,
IAct_Sure_To_Kill, IInt_Sure_To_Kill,
make_lit_string("Are you sure?"));
copy(&view->dest, file->name.live_name);
}
else{
working_set_remove(system, working_set, file->name.source_path);
kill_file(system, models, file, string_zero());
}
}
}break; }break;
#endif
#if 0
case DACT_CLOSE: case DACT_CLOSE:
{ {
app_result.perform_kill = 1;
}break; }break;
#endif
} }
if (string.str){ if (string.str){
@ -4538,6 +4518,8 @@ App_Step_Sig(app_step){
Assert(general_memory_check(&models->mem.general)); Assert(general_memory_check(&models->mem.general));
app_result.perform_kill = models->keep_playing;
// end-of-app_step // end-of-app_step
} }

View File

@ -65,9 +65,7 @@ struct Models{
Custom_API config_api; Custom_API config_api;
Scroll_Rule_Function *scroll_rule; Scroll_Rule_Function *scroll_rule;
#if 0 b32 keep_playing;
File_Exchange files;
#endif
}; };
// BOTTOM // BOTTOM

View File

@ -1,7 +1,5 @@
enum Action_Type{ enum Action_Type{
DACT_SET_LINE, DACT_SET_LINE,
DACT_TRY_KILL,
DACT_CLOSE,
}; };
struct Delayed_Action{ struct Delayed_Action{
@ -120,5 +118,3 @@ delayed_action_repush(Delay *delay, Delayed_Action *act){
} }
#define delayed_set_line(delay, ...) delayed_action_(delay, DACT_SET_LINE, ##__VA_ARGS__) #define delayed_set_line(delay, ...) delayed_action_(delay, DACT_SET_LINE, ##__VA_ARGS__)
#define delayed_try_kill(delay, ...) delayed_action_(delay, DACT_TRY_KILL, ##__VA_ARGS__)
#define delayed_close(delay, ...) delayed_action_(delay, DACT_CLOSE, ##__VA_ARGS__)

View File

@ -3169,6 +3169,35 @@ kill_file(System_Functions *system, Models *models,
} }
} }
internal void
try_kill_file(System_Functions *system, Models *models,
Editing_File *file, View *view, String string){
Working_Set *working_set = &models->working_set;
if (!file && string.str){
file = working_set_lookup_file(working_set, string);
if (!file){
file = working_set_contains(system, working_set, string);
}
}
if (file && !file->settings.never_kill){
if (buffer_needs_save(file)){
if (view == 0){
view = models->layout.panels[models->layout.active_panel].view;
}
view_show_interactive(system, view, &models->map_ui,
IAct_Sure_To_Kill, IInt_Sure_To_Kill,
make_lit_string("Are you sure?"));
copy(&view->dest, file->name.live_name);
}
else{
kill_file(system, models, file, string_zero());
view_show_file(view);
}
}
}
internal void internal void
interactive_view_complete(System_Functions *system, View *view, String dest, i32 user_action){ interactive_view_complete(System_Functions *system, View *view, String dest, i32 user_action){
Models *models = view->persistent.models; Models *models = view->persistent.models;
@ -3178,10 +3207,12 @@ interactive_view_complete(System_Functions *system, View *view, String dest, i32
case IAct_Open: case IAct_Open:
view_open_file(system, models, view, dest); view_open_file(system, models, view, dest);
touch_file(&models->working_set, old_file); touch_file(&models->working_set, old_file);
view_show_file(view);
break; break;
case IAct_Save_As: case IAct_Save_As:
view_save_file(system, models, 0, view, dest, 1); view_save_file(system, models, 0, view, dest, 1);
view_show_file(view);
break; break;
case IAct_New: case IAct_New:
@ -3189,6 +3220,7 @@ interactive_view_complete(System_Functions *system, View *view, String dest, i32
if (dest.size > 0 && if (dest.size > 0 &&
!char_is_slash(models->hot_directory.string.str[dest.size-1])){ !char_is_slash(models->hot_directory.string.str[dest.size-1])){
view_new_file(system, models, view, dest); view_new_file(system, models, view, dest);
view_show_file(view);
}break; }break;
case IAct_Switch: case IAct_Switch:
@ -3205,24 +3237,25 @@ interactive_view_complete(System_Functions *system, View *view, String dest, i32
if (file){ if (file){
view_set_file(view, file, models); view_set_file(view, file, models);
} }
view_show_file(view);
} }
break; break;
case IAct_Kill: case IAct_Kill:
delayed_try_kill(&models->delay1, dest); try_kill_file(system, models, 0, 0, dest);
break; break;
case IAct_Sure_To_Close: case IAct_Sure_To_Close:
switch (user_action){ switch (user_action){
case 0: case 0:
delayed_close(&models->delay1); models->keep_playing = 0;
break; break;
case 1: case 1:
break; break;
case 2: case 2:
// TODO(allen): Save all. // TODO(allen): Save all and close.
break; break;
} }
break; break;
@ -3231,6 +3264,7 @@ interactive_view_complete(System_Functions *system, View *view, String dest, i32
switch (user_action){ switch (user_action){
case 0: case 0:
kill_file(system, models, 0, dest); kill_file(system, models, 0, dest);
view_show_file(view);
break; break;
case 1: case 1:
@ -3238,12 +3272,12 @@ interactive_view_complete(System_Functions *system, View *view, String dest, i32
case 2: case 2:
view_save_file(system, models, 0, 0, dest, 0); view_save_file(system, models, 0, 0, dest, 0);
kill_file(system, models, 0, dest);; kill_file(system, models, 0, dest);
view_show_file(view);
break; break;
} }
break; break;
} }
view_show_file(view);
} }
#if 0 #if 0
@ -4023,6 +4057,11 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
case VUI_Interactive: case VUI_Interactive:
{ {
b32 complete = 0;
char comp_dest_space[1024];
String comp_dest = make_fixed_width_string(comp_dest_space);
i32 comp_action = 0;
view->current_scroll = &view->gui_scroll; view->current_scroll = &view->gui_scroll;
GUI_id id = {0}; GUI_id id = {0};
@ -4107,7 +4146,8 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
do_new_directory = 1; do_new_directory = 1;
} }
else if (use_item_in_list){ else if (use_item_in_list){
interactive_view_complete(system, view, loop.full_path, 0); complete = 1;
copy(&comp_dest, loop.full_path);
} }
} }
} }
@ -4117,7 +4157,8 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
gui_end_list(target); gui_end_list(target);
if (activate_directly){ if (activate_directly){
interactive_view_complete(system, view, hdir->string, 0); complete = 1;
copy(&comp_dest, hdir->string);
} }
if (do_new_directory){ if (do_new_directory){
@ -4211,7 +4252,8 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
id.id[0] = (u64)(file); id.id[0] = (u64)(file);
if (gui_do_file_option(target, id, file->name.live_name, 0, message)){ if (gui_do_file_option(target, id, file->name.live_name, 0, message)){
interactive_view_complete(system, view, file->name.live_name, 0); complete = 1;
copy(&comp_dest, file->name.live_name);
} }
} }
} }
@ -4229,7 +4271,8 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
id.id[0] = (u64)(file); id.id[0] = (u64)(file);
if (gui_do_file_option(target, id, file->name.live_name, 0, message)){ if (gui_do_file_option(target, id, file->name.live_name, 0, message)){
interactive_view_complete(system, view, file->name.live_name, 0); complete = 1;
copy(&comp_dest, file->name.live_name);
} }
} }
@ -4263,7 +4306,9 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
} }
if (action != -1){ if (action != -1){
interactive_view_complete(system, view, view->dest, action); complete = 1;
copy(&comp_dest, view->dest);
comp_action = action;
} }
}break; }break;
@ -4295,10 +4340,17 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
} }
if (action != -1){ if (action != -1){
interactive_view_complete(system, view, view->dest, action); complete = 1;
copy(&comp_dest, view->dest);
comp_action = action;
} }
}break; }break;
} }
if (complete){
terminate_with_null(&comp_dest);
interactive_view_complete(system, view, comp_dest, comp_action);
}
}break; }break;
} }
} }

View File

@ -156,14 +156,11 @@ char *daction_enum[] = {
"SAVE", "SAVE",
"NEW", "NEW",
"SWITCH", "SWITCH",
#endif
"TRY_KILL", "TRY_KILL",
#if 0
"KILL", "KILL",
"TOUCH_FILE", "TOUCH_FILE",
#endif
"CLOSE", "CLOSE",
#endif
}; };
char str_alloc_copy[] = char str_alloc_copy[] =