live file list 100 up and running
parent
7983c2ea38
commit
f128d63a66
|
@ -84,13 +84,14 @@ struct View{
|
||||||
Interactive_Interaction interaction;
|
Interactive_Interaction interaction;
|
||||||
Interactive_Action action;
|
Interactive_Action action;
|
||||||
|
|
||||||
|
char dest_[256];
|
||||||
|
String dest;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// interactive stuff
|
// interactive stuff
|
||||||
b32 finished;
|
b32 finished;
|
||||||
char query_[256];
|
char query_[256];
|
||||||
char dest_[256];
|
|
||||||
String query;
|
String query;
|
||||||
String dest;
|
|
||||||
i32 user_action;
|
i32 user_action;
|
||||||
|
|
||||||
// theme stuff
|
// theme stuff
|
||||||
|
@ -2656,6 +2657,7 @@ view_show_interactive(System_Functions *system, View *view,
|
||||||
view->gui_scroll = {0};
|
view->gui_scroll = {0};
|
||||||
view->action = action;
|
view->action = action;
|
||||||
view->interaction = interaction;
|
view->interaction = interaction;
|
||||||
|
view->dest = make_fixed_width_string(view->dest_);
|
||||||
|
|
||||||
hot_directory_clean_end(&models->hot_directory);
|
hot_directory_clean_end(&models->hot_directory);
|
||||||
hot_directory_reload(system, &models->hot_directory, &models->working_set);
|
hot_directory_reload(system, &models->hot_directory, &models->working_set);
|
||||||
|
@ -3707,7 +3709,6 @@ step_file_view(System_Functions *system, View *view, b32 is_active){
|
||||||
for (i = 0; i < loop.count; ++i){
|
for (i = 0; i < loop.count; ++i){
|
||||||
file_info = get_exhaustive_info(system, &models->working_set, &loop, i);
|
file_info = get_exhaustive_info(system, &models->working_set, &loop, i);
|
||||||
|
|
||||||
///////////////////////////
|
|
||||||
if (file_info.name_match){
|
if (file_info.name_match){
|
||||||
file_option_id.id[0] = (u64)(file_info.info);
|
file_option_id.id[0] = (u64)(file_info.info);
|
||||||
if (gui_do_file_option(target, file_option_id,
|
if (gui_do_file_option(target, file_option_id,
|
||||||
|
@ -3722,7 +3723,6 @@ step_file_view(System_Functions *system, View *view, b32 is_active){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
///////////////////////////
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (do_new_directory){
|
if (do_new_directory){
|
||||||
|
@ -3731,6 +3731,59 @@ step_file_view(System_Functions *system, View *view, b32 is_active){
|
||||||
|
|
||||||
gui_end_scrollable(target);
|
gui_end_scrollable(target);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
case IInt_Live_File_List:
|
||||||
|
{
|
||||||
|
persist String message_unsaved = make_lit_string(" *");
|
||||||
|
persist String message_unsynced = make_lit_string(" !");
|
||||||
|
|
||||||
|
String message = {0};
|
||||||
|
switch (view->action){
|
||||||
|
case IAct_Switch: message = make_lit_string("Switch: "); break;
|
||||||
|
case IAct_Kill: message = make_lit_string("Kill: "); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Absolutes absolutes;
|
||||||
|
GUI_id file_option_id, str_edit_id;
|
||||||
|
Editing_File *file;
|
||||||
|
File_Node *node, *used_nodes;
|
||||||
|
Working_Set *working_set = &models->working_set;
|
||||||
|
|
||||||
|
get_absolutes(view->dest, &absolutes, 1, 1);
|
||||||
|
|
||||||
|
gui_do_text_field(target, message, view->dest);
|
||||||
|
|
||||||
|
str_edit_id.id[0] = (u64)(&view->dest);
|
||||||
|
if (gui_do_text_input(target, str_edit_id, &view->dest)){
|
||||||
|
interactive_view_complete(view, view->dest, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
gui_get_scroll_vars(target, view->showing_ui, &view->gui_scroll);
|
||||||
|
gui_begin_scrollable(target, view->showing_ui, view->gui_scroll, 9.f * view->font_height);
|
||||||
|
|
||||||
|
used_nodes = &working_set->used_sentinel;
|
||||||
|
for (dll_items(node, used_nodes)){
|
||||||
|
file = (Editing_File*)node;
|
||||||
|
Assert(!file->state.is_dummy);
|
||||||
|
|
||||||
|
message = {0};
|
||||||
|
switch (buffer_get_sync(file)){
|
||||||
|
case SYNC_BEHIND_OS: message = message_unsynced; break;
|
||||||
|
case SYNC_UNSAVED: message = message_unsaved; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filename_match(view->dest, &absolutes, file->name.live_name, 1)){
|
||||||
|
file_option_id.id[0] = (u64)(file);
|
||||||
|
if (gui_do_file_option(target, file_option_id, file->name.live_name, 0, message)){
|
||||||
|
interactive_view_complete(view, file->name.live_name, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gui_end_scrollable(target);
|
||||||
|
}break;
|
||||||
|
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3952,6 +4005,28 @@ do_input_file_view(System_Functions *system, Exchange *exchange,
|
||||||
is_file_scroll = 1;
|
is_file_scroll = 1;
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
case guicom_text_input:
|
||||||
|
{
|
||||||
|
Single_Line_Input_Step step;
|
||||||
|
Key_Event_Data key;
|
||||||
|
|
||||||
|
GUI_Edit *e = (GUI_Edit*)h;
|
||||||
|
String *string = (String*)e->out;
|
||||||
|
Key_Summary *keys = &user_input->keys;
|
||||||
|
|
||||||
|
i32 i, count;
|
||||||
|
|
||||||
|
count = keys->count;
|
||||||
|
for (i = 0; i < count; ++i){
|
||||||
|
key = get_single_key(keys, i);
|
||||||
|
step = app_single_line_input_step(system, key, string);
|
||||||
|
if ((step.hit_newline || step.hit_ctrl_newline) && !step.no_file_match){
|
||||||
|
result = 1;
|
||||||
|
view->gui_target.active = e->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
|
||||||
case guicom_file_input:
|
case guicom_file_input:
|
||||||
{
|
{
|
||||||
Single_Line_Input_Step step;
|
Single_Line_Input_Step step;
|
||||||
|
|
16
4ed_gui.cpp
16
4ed_gui.cpp
|
@ -124,6 +124,7 @@ enum GUI_Command_Type{
|
||||||
guicom_top_bar,
|
guicom_top_bar,
|
||||||
guicom_file,
|
guicom_file,
|
||||||
guicom_text_field,
|
guicom_text_field,
|
||||||
|
guicom_text_input,
|
||||||
guicom_file_input,
|
guicom_file_input,
|
||||||
guicom_file_option,
|
guicom_file_option,
|
||||||
guicom_scrollable,
|
guicom_scrollable,
|
||||||
|
@ -315,15 +316,23 @@ gui_do_text_field(GUI_Target *target, String prompt, String text){
|
||||||
gui_push_string(target, h, text);
|
gui_push_string(target, h, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal b32
|
||||||
|
gui_do_text_input(GUI_Target *target, GUI_id id, void *out){
|
||||||
|
b32 result = 0;
|
||||||
|
gui_push_string_edit_command(target, guicom_text_input, id, out);
|
||||||
|
if (gui_id_eq(id, target->active)){
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
gui_do_file_input(GUI_Target *target, GUI_id id, void *out){
|
gui_do_file_input(GUI_Target *target, GUI_id id, void *out){
|
||||||
b32 result = 0;
|
b32 result = 0;
|
||||||
gui_push_string_edit_command(target, guicom_file_input, id, out);
|
gui_push_string_edit_command(target, guicom_file_input, id, out);
|
||||||
|
|
||||||
if (gui_id_eq(id, target->active)){
|
if (gui_id_eq(id, target->active)){
|
||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -600,6 +609,7 @@ gui_interpret(GUI_Target *target, GUI_Session *session, GUI_Header *h){
|
||||||
end_section = section;
|
end_section = section;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case guicom_text_input:
|
||||||
case guicom_file_input:
|
case guicom_file_input:
|
||||||
always_give_to_user = 1;
|
always_give_to_user = 1;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue