Mercurial > repos > blastem
comparison nuklear_ui/blastem_nuklear.c @ 1577:69d624271cf8
Persist config on exit if config has changed
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 01 May 2018 19:11:37 -0700 |
parents | ccb3a8ae7ad0 |
children | aaa28c9bf67d |
comparison
equal
deleted
inserted
replaced
1576:2b132d894d76 | 1577:69d624271cf8 |
---|---|
797 } | 797 } |
798 } | 798 } |
799 } | 799 } |
800 uint32_t width = render_width(); | 800 uint32_t width = render_width(); |
801 uint32_t height = render_height(); | 801 uint32_t height = render_height(); |
802 uint32_t desired_width = context->style.font->height * 10; | |
803 if (desired_width > width) { | |
804 desired_width = width; | |
805 } | |
802 if (nk_begin(context, "Video Settings", nk_rect(0, 0, width, height), 0)) { | 806 if (nk_begin(context, "Video Settings", nk_rect(0, 0, width, height), 0)) { |
803 nk_layout_row_static(context, 30, width > 300 ? 300 : width, 2); | 807 nk_layout_row_static(context, context->style.font->height, desired_width, 2); |
804 settings_toggle(context, "Fullscreen", "video\0fullscreen\0", 0); | 808 settings_toggle(context, "Fullscreen", "video\0fullscreen\0", 0); |
805 settings_toggle(context, "Open GL", "video\0gl\0", 1); | 809 settings_toggle(context, "Open GL", "video\0gl\0", 1); |
806 settings_toggle(context, "Scanlines", "video\0scanlines\0", 0); | 810 settings_toggle(context, "Scanlines", "video\0scanlines\0", 0); |
807 selected_vsync = settings_dropdown_ex(context, "VSync", vsync_opts, vsync_opt_names, num_vsync_opts, selected_vsync, "video\0vsync\0"); | 811 selected_vsync = settings_dropdown_ex(context, "VSync", vsync_opts, vsync_opt_names, num_vsync_opts, selected_vsync, "video\0vsync\0"); |
808 settings_int_input(context, "Windowed Width", "video\0width\0", "640"); | 812 settings_int_input(context, "Windowed Width", "video\0width\0", "640"); |
809 nk_label(context, "Shader", NK_TEXT_LEFT); | 813 nk_label(context, "Shader", NK_TEXT_LEFT); |
810 uint32_t next_selected = nk_combo(context, (const char **)prog_names, num_progs, selected_prog, 30, nk_vec2(300, 300)); | 814 uint32_t next_selected = nk_combo(context, (const char **)prog_names, num_progs, selected_prog, context->style.font->height, nk_vec2(desired_width, desired_width)); |
811 if (next_selected != selected_prog) { | 815 if (next_selected != selected_prog) { |
812 selected_prog = next_selected; | 816 selected_prog = next_selected; |
813 config_dirty = 1; | 817 config_dirty = 1; |
814 config = tern_insert_path(config, "video\0fragment_shader\0", (tern_val){.ptrval = strdup(progs[next_selected].fragment)}, TVAL_PTR); | 818 config = tern_insert_path(config, "video\0fragment_shader\0", (tern_val){.ptrval = strdup(progs[next_selected].fragment)}, TVAL_PTR); |
815 config = tern_insert_path(config, "video\0vertex_shader\0", (tern_val){.ptrval = strdup(progs[next_selected].vertex)}, TVAL_PTR); | 819 config = tern_insert_path(config, "video\0vertex_shader\0", (tern_val){.ptrval = strdup(progs[next_selected].vertex)}, TVAL_PTR); |
1108 return 1; | 1112 return 1; |
1109 } | 1113 } |
1110 return strcmp(style, "rom") != 0; | 1114 return strcmp(style, "rom") != 0; |
1111 } | 1115 } |
1112 | 1116 |
1117 static void persist_config_exit(void) | |
1118 { | |
1119 if (config_dirty) { | |
1120 persist_config(config); | |
1121 } | |
1122 } | |
1123 | |
1113 void blastem_nuklear_init(uint8_t file_loaded) | 1124 void blastem_nuklear_init(uint8_t file_loaded) |
1114 { | 1125 { |
1115 context = nk_sdl_init(render_get_window()); | 1126 context = nk_sdl_init(render_get_window()); |
1116 | 1127 |
1117 uint32_t buf_size; | 1128 uint32_t buf_size; |
1125 current_view = file_loaded ? view_play : view_menu; | 1136 current_view = file_loaded ? view_play : view_menu; |
1126 render_set_ui_render_fun(blastem_nuklear_render); | 1137 render_set_ui_render_fun(blastem_nuklear_render); |
1127 render_set_event_handler(handle_event); | 1138 render_set_event_handler(handle_event); |
1128 render_set_gl_context_handlers(context_destroyed, context_created); | 1139 render_set_gl_context_handlers(context_destroyed, context_created); |
1129 | 1140 |
1130 | 1141 atexit(persist_config_exit); |
1131 | 1142 |
1132 active = 1; | 1143 active = 1; |
1133 ui_idle_loop(); | 1144 ui_idle_loop(); |
1134 } | 1145 } |