config menu now works, all that's left is theme
This commit is contained in:
parent
752c995066
commit
571ed3f152
|
@ -88,12 +88,6 @@ struct View{
|
|||
String dest;
|
||||
|
||||
#if 0
|
||||
// interactive stuff
|
||||
b32 finished;
|
||||
char query_[256];
|
||||
String query;
|
||||
i32 user_action;
|
||||
|
||||
// theme stuff
|
||||
View *hot_file_view;
|
||||
u32 *palette;
|
||||
|
@ -2639,12 +2633,19 @@ view_show_theme(View *view, Command_Map *gui_map){
|
|||
}
|
||||
#endif
|
||||
|
||||
inline void
|
||||
view_show_menu(View *view, Command_Map *gui_map){
|
||||
view->map_for_file = view->map;
|
||||
view->map = gui_map;
|
||||
view->showing_ui = VUI_Menu;
|
||||
}
|
||||
|
||||
inline void
|
||||
view_show_menu(View *view, Command_Map *gui_map){}
|
||||
|
||||
inline void
|
||||
view_show_config(View *view, Command_Map *gui_map){}
|
||||
view_show_config(View *view, Command_Map *gui_map){
|
||||
view->map_for_file = view->map;
|
||||
view->map = gui_map;
|
||||
view->showing_ui = VUI_Config;
|
||||
}
|
||||
|
||||
inline void
|
||||
view_show_interactive(System_Functions *system, View *view,
|
||||
|
@ -3671,6 +3672,44 @@ step_file_view(System_Functions *system, View *view, b32 is_active){
|
|||
else{
|
||||
do_widget(view, target);
|
||||
switch (view->showing_ui){
|
||||
case VUI_Menu:
|
||||
{
|
||||
String message = make_lit_string("Menu");
|
||||
String empty_string = {0};
|
||||
GUI_id id = {0};
|
||||
|
||||
gui_do_text_field(target, message, empty_string);
|
||||
|
||||
id.id[0] = (u64)(0 + (IInt_Sure_To_Close << 8));
|
||||
message = make_lit_string("Theme");
|
||||
if (gui_do_fixed_option(target, id, message, 0)){
|
||||
view_show_theme(view, view->map);
|
||||
}
|
||||
|
||||
id.id[0] = (u64)(1 + (IInt_Sure_To_Close << 8));
|
||||
message = make_lit_string("Config");
|
||||
if (gui_do_fixed_option(target, id, message, 0)){
|
||||
view_show_config(view, view->map);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case VUI_Config:
|
||||
{
|
||||
String message = make_lit_string("Config");
|
||||
String empty_string = {0};
|
||||
GUI_id id = {0};
|
||||
|
||||
gui_do_text_field(target, message, empty_string);
|
||||
|
||||
id.id[0] = (u64)(0 + (IInt_Sure_To_Close << 8));
|
||||
message = make_lit_string("Left Ctrl + Left Alt = AltGr");
|
||||
if (gui_do_fixed_option_checkbox(target, id, message, 0, (b8)models->settings.lctrl_lalt_is_altgr)){
|
||||
models->settings.lctrl_lalt_is_altgr = !models->settings.lctrl_lalt_is_altgr;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case VUI_Interactive:
|
||||
switch (view->interaction){
|
||||
case IInt_Sys_File_List:
|
||||
|
@ -4130,6 +4169,7 @@ do_input_file_view(System_Functions *system, Exchange *exchange,
|
|||
}break;
|
||||
|
||||
case guicom_fixed_option:
|
||||
case guicom_fixed_option_checkbox:
|
||||
{
|
||||
Key_Event_Data key;
|
||||
Key_Summary *keys = &user_input->keys;
|
||||
|
@ -4582,7 +4622,8 @@ do_render_file_bar(Render_Target *target, View *view, Editing_File *file, i32_Re
|
|||
}
|
||||
|
||||
internal void
|
||||
draw_fat_option_block(GUI_Target *gui_target, Render_Target *target, View *view, i32_Rect rect, GUI_id id, String text, String pop){
|
||||
draw_fat_option_block(GUI_Target *gui_target, Render_Target *target, View *view, i32_Rect rect, GUI_id id,
|
||||
String text, String pop, i8 checkbox = -1){
|
||||
Models *models = view->models;
|
||||
Style *style = &models->style;
|
||||
|
||||
|
@ -4617,6 +4658,21 @@ draw_fat_option_block(GUI_Target *gui_target, Render_Target *target, View *view,
|
|||
draw_rectangle(target, inner, back);
|
||||
draw_margin(target, rect, inner, margin);
|
||||
|
||||
if (checkbox != -1){
|
||||
u32 checkbox_color = style->main.margin_active_color;
|
||||
i32_Rect checkbox_rect = get_inner_rect(inner, (inner.y1 - inner.y0 - h)/2);
|
||||
checkbox_rect.x1 = checkbox_rect.x0 + (checkbox_rect.y1 - checkbox_rect.y0);
|
||||
|
||||
if (checkbox == 0){
|
||||
draw_rectangle_outline(target, checkbox_rect, checkbox_color);
|
||||
}
|
||||
else{
|
||||
draw_rectangle(target, checkbox_rect, checkbox_color);
|
||||
}
|
||||
|
||||
x = checkbox_rect.x1 + 3;
|
||||
}
|
||||
|
||||
x = draw_string(target, font_id, text, x, y, text_color);
|
||||
draw_string(target, font_id, pop, x, y, pop_color);
|
||||
}
|
||||
|
@ -4701,6 +4757,18 @@ do_render_file_view(System_Functions *system, Exchange *exchange,
|
|||
draw_fat_option_block(gui_target, target, view, gui_session.rect, b->id, f, m);
|
||||
}break;
|
||||
|
||||
case guicom_fixed_option_checkbox:
|
||||
{
|
||||
GUI_Interactive *b = (GUI_Interactive*)h;
|
||||
void *ptr = (b + 1);
|
||||
String f = gui_read_string(&ptr);
|
||||
gui_read_byte(&ptr);
|
||||
b8 status = (b8)gui_read_byte(&ptr);
|
||||
String m = {0};
|
||||
|
||||
draw_fat_option_block(gui_target, target, view, gui_session.rect, b->id, f, m, status);
|
||||
}break;
|
||||
|
||||
case guicom_scrollable:
|
||||
{
|
||||
Models *models = view->models;
|
||||
|
|
27
4ed_gui.cpp
27
4ed_gui.cpp
|
@ -128,6 +128,7 @@ enum GUI_Command_Type{
|
|||
guicom_file_input,
|
||||
guicom_file_option,
|
||||
guicom_fixed_option,
|
||||
guicom_fixed_option_checkbox,
|
||||
guicom_scrollable,
|
||||
guicom_scrollable_top,
|
||||
guicom_scrollable_slider,
|
||||
|
@ -377,6 +378,23 @@ gui_do_fixed_option(GUI_Target *target, GUI_id id, String message, char key){
|
|||
return(result);
|
||||
}
|
||||
|
||||
internal b32
|
||||
gui_do_fixed_option_checkbox(GUI_Target *target, GUI_id id, String message, char key, b8 state){
|
||||
b32 result = 0;
|
||||
GUI_Interactive *b = gui_push_button_command(target, guicom_fixed_option_checkbox, id);
|
||||
GUI_Header *h = (GUI_Header*)b;
|
||||
gui_push_string(target, h, message);
|
||||
gui_push_item(target, h, &key, 1);
|
||||
gui_push_item(target, h, &state, 1);
|
||||
gui_align(target, h);
|
||||
|
||||
if (gui_id_eq(id, target->active)){
|
||||
result = 1;
|
||||
}
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
internal GUI_id
|
||||
gui_id_scrollbar(){
|
||||
GUI_id id;
|
||||
|
@ -691,6 +709,7 @@ gui_interpret(GUI_Target *target, GUI_Session *session, GUI_Header *h){
|
|||
|
||||
case guicom_file_option:
|
||||
case guicom_fixed_option:
|
||||
case guicom_fixed_option_checkbox:
|
||||
give_to_user = 1;
|
||||
rect = gui_layout_fixed_h(session, y, session->line_height * 2);
|
||||
end_v = rect.y1;
|
||||
|
@ -799,6 +818,14 @@ gui_interpret(GUI_Target *target, GUI_Session *session, GUI_Header *h){
|
|||
|
||||
#define NextHeader(h) ((GUI_Header*)((char*)(h) + (h)->size))
|
||||
|
||||
internal i8
|
||||
gui_read_byte(void **ptr){
|
||||
i8 result;
|
||||
result = *(i8*)*ptr;
|
||||
*ptr = ((char*)*ptr) + 1;
|
||||
return(result);
|
||||
}
|
||||
|
||||
internal i32
|
||||
gui_read_integer(void **ptr){
|
||||
i32 result;
|
||||
|
|
Loading…
Reference in New Issue