index based styles
This commit is contained in:
parent
6e5bacf154
commit
21ce392a01
22
4ed.cpp
22
4ed.cpp
|
@ -690,10 +690,12 @@ COMMAND_DECL(paste){
|
||||||
view_cursor_move(view, next_cursor_pos);
|
view_cursor_move(view, next_cursor_pos);
|
||||||
view->file_data.mark = pos_left;
|
view->file_data.mark = pos_left;
|
||||||
|
|
||||||
|
Style *style = main_style(models);
|
||||||
|
u32 paste_color = style->main.paste_color;
|
||||||
for (iter = file_view_iter_init(&models->layout, file, 0);
|
for (iter = file_view_iter_init(&models->layout, file, 0);
|
||||||
file_view_iter_good(iter);
|
file_view_iter_good(iter);
|
||||||
iter = file_view_iter_next(iter)){
|
iter = file_view_iter_next(iter)){
|
||||||
view_post_paste_effect(iter.view, 20, pos_left, src->size, models->style.main.paste_color);
|
view_post_paste_effect(iter.view, 20, pos_left, src->size, paste_color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -721,10 +723,12 @@ COMMAND_DECL(paste_next){
|
||||||
view_cursor_move(view, next_cursor_pos);
|
view_cursor_move(view, next_cursor_pos);
|
||||||
view->file_data.mark = range.start;
|
view->file_data.mark = range.start;
|
||||||
|
|
||||||
|
Style *style = main_style(models);
|
||||||
|
u32 paste_color = style->main.paste_color;
|
||||||
for (iter = file_view_iter_init(&models->layout, file, 0);
|
for (iter = file_view_iter_init(&models->layout, file, 0);
|
||||||
file_view_iter_good(iter);
|
file_view_iter_good(iter);
|
||||||
iter = file_view_iter_next(iter)){
|
iter = file_view_iter_next(iter)){
|
||||||
view_post_paste_effect(iter.view, 20, range.start, src->size, models->style.main.paste_color);
|
view_post_paste_effect(iter.view, 20, range.start, src->size, paste_color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
@ -2489,7 +2493,7 @@ extern "C"{
|
||||||
s = styles->styles;
|
s = styles->styles;
|
||||||
for (i = 0; i < count; ++i, ++s){
|
for (i = 0; i < count; ++i, ++s){
|
||||||
if (match(s->name, theme_name)){
|
if (match(s->name, theme_name)){
|
||||||
style_copy(&cmd->models->style, s);
|
style_copy(main_style(cmd->models), s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2510,7 +2514,7 @@ extern "C"{
|
||||||
|
|
||||||
SET_THEME_COLORS_SIG(external_set_theme_colors){
|
SET_THEME_COLORS_SIG(external_set_theme_colors){
|
||||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||||
Style *style = &cmd->models->style;
|
Style *style = main_style(cmd->models);
|
||||||
Theme_Color *theme_color;
|
Theme_Color *theme_color;
|
||||||
u32 *color;
|
u32 *color;
|
||||||
i32 i;
|
i32 i;
|
||||||
|
@ -2696,7 +2700,7 @@ app_hardcode_styles(Models *models){
|
||||||
Interactive_Style file_info_style;
|
Interactive_Style file_info_style;
|
||||||
Style *styles, *style;
|
Style *styles, *style;
|
||||||
styles = models->styles.styles;
|
styles = models->styles.styles;
|
||||||
style = styles;
|
style = styles + 1;
|
||||||
|
|
||||||
i16 fonts = 1;
|
i16 fonts = 1;
|
||||||
models->global_font.font_id = fonts + 0;
|
models->global_font.font_id = fonts + 0;
|
||||||
|
@ -2859,9 +2863,9 @@ app_hardcode_styles(Models *models){
|
||||||
style_set_name(style, make_lit_string("stb"));
|
style_set_name(style, make_lit_string("stb"));
|
||||||
|
|
||||||
style->main.back_color = 0xFFD6D6D6;
|
style->main.back_color = 0xFFD6D6D6;
|
||||||
style->main.margin_color = 0xFF5C5C5C;
|
style->main.margin_color = 0xFF9E9E9E;
|
||||||
style->main.margin_hover_color = 0xFF7E7E7E;
|
style->main.margin_hover_color = 0xFF7E7E7E;
|
||||||
style->main.margin_active_color = 0xFF9E9E9E;
|
style->main.margin_active_color = 0xFF5C5C5C;
|
||||||
style->main.cursor_color = 0xFF000000;
|
style->main.cursor_color = 0xFF000000;
|
||||||
style->main.at_cursor_color = 0xFFD6D6D6;
|
style->main.at_cursor_color = 0xFFD6D6D6;
|
||||||
style->main.mark_color = 0xFF525252;
|
style->main.mark_color = 0xFF525252;
|
||||||
|
@ -2895,7 +2899,7 @@ app_hardcode_styles(Models *models){
|
||||||
|
|
||||||
models->styles.count = (i32)(style - styles);
|
models->styles.count = (i32)(style - styles);
|
||||||
models->styles.max = ArrayCount(models->styles.styles);
|
models->styles.max = ArrayCount(models->styles.styles);
|
||||||
style_copy(&models->style, models->styles.styles);
|
style_copy(main_style(models), models->styles.styles + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *_4coder_get_extension(const char *filename, int len, int *extension_len){
|
char *_4coder_get_extension(const char *filename, int len, int *extension_len){
|
||||||
|
@ -4520,7 +4524,7 @@ App_Step_Sig(app_step){
|
||||||
i32_Rect inner = panel->inner;
|
i32_Rect inner = panel->inner;
|
||||||
|
|
||||||
View *view = panel->view;
|
View *view = panel->view;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
|
|
||||||
b32 active = (panel == cmd->panel);
|
b32 active = (panel == cmd->panel);
|
||||||
u32 back_color = style->main.back_color;
|
u32 back_color = style->main.back_color;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Mr. 4th Dimention - Allen Webster
|
* Mr. 4th Dimention - Allen Webster
|
||||||
*
|
*
|
||||||
* 27.01.2016
|
* 06.05.2016 (dd.mm.yyyy)
|
||||||
*
|
*
|
||||||
* Global app level settings definition
|
* Global app level settings definition
|
||||||
*
|
*
|
||||||
|
@ -46,7 +46,6 @@ struct Models{
|
||||||
|
|
||||||
Font_Set *font_set;
|
Font_Set *font_set;
|
||||||
Style_Font global_font;
|
Style_Font global_font;
|
||||||
Style style;
|
|
||||||
Style_Library styles;
|
Style_Library styles;
|
||||||
u32 *palette;
|
u32 *palette;
|
||||||
i32 palette_size;
|
i32 palette_size;
|
||||||
|
@ -68,3 +67,5 @@ struct Models{
|
||||||
|
|
||||||
// BOTTOM
|
// BOTTOM
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
#include "4ed_gui.cpp"
|
#include "4ed_gui.cpp"
|
||||||
#include "4ed_layout.cpp"
|
#include "4ed_layout.cpp"
|
||||||
#include "4ed_delay.cpp"
|
#include "4ed_delay.cpp"
|
||||||
#include "4ed_app_settings.h"
|
#include "4ed_app_models.h"
|
||||||
#include "4ed_file_view.cpp"
|
#include "4ed_file_view.cpp"
|
||||||
#include "4ed.cpp"
|
#include "4ed.cpp"
|
||||||
|
|
||||||
|
|
|
@ -1837,6 +1837,16 @@ view_post_paste_effect(View *view, i32 ticks, i32 start, i32 size, u32 color){
|
||||||
file->state.paste_effect.tick_max = ticks;
|
file->state.paste_effect.tick_max = ticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal Style*
|
||||||
|
get_style(Models *models, i32 i){
|
||||||
|
return (&models->styles.styles[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal Style*
|
||||||
|
main_style(Models *models){
|
||||||
|
return (get_style(models, 0));
|
||||||
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
view_undo_redo(System_Functions *system,
|
view_undo_redo(System_Functions *system,
|
||||||
Models *models, View *view,
|
Models *models, View *view,
|
||||||
|
@ -1861,8 +1871,9 @@ view_undo_redo(System_Functions *system,
|
||||||
else view_cursor_move(view, step.post_pos);
|
else view_cursor_move(view, step.post_pos);
|
||||||
view->file_data.mark = view->file_data.cursor.pos;
|
view->file_data.mark = view->file_data.cursor.pos;
|
||||||
|
|
||||||
|
Style *style = main_style(models);
|
||||||
view_post_paste_effect(view, 10, step.edit.start, step.edit.len,
|
view_post_paste_effect(view, 10, step.edit.start, step.edit.len,
|
||||||
models->style.main.undo_color);
|
style->main.undo_color);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
TentativeAssert(spec.step.special_type == 1);
|
TentativeAssert(spec.step.special_type == 1);
|
||||||
|
@ -2497,127 +2508,6 @@ remeasure_file_view(System_Functions *system, View *view, i32_Rect rect){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
internal void
|
|
||||||
undo_shit(System_Functions *system, View *view, UI_State *state, UI_Layout *layout,
|
|
||||||
i32 total_count, i32 undo_count, i32 scrub_max){
|
|
||||||
|
|
||||||
Editing_File *file = view->file;
|
|
||||||
|
|
||||||
if (view->widget.timeline.undo_line){
|
|
||||||
if (do_button(1, state, layout, "- Undo", 1)){
|
|
||||||
view->widget.timeline.undo_line = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (view->widget.timeline.undo_line){
|
|
||||||
Widget_ID wid = make_id(state, 2);
|
|
||||||
i32 new_count;
|
|
||||||
if (do_undo_slider(wid, state, layout, total_count, undo_count, 0, &new_count)){
|
|
||||||
for (i32 i = 0; i < scrub_max && new_count < undo_count; ++i){
|
|
||||||
view_undo(system, view->models, view);
|
|
||||||
--undo_count;
|
|
||||||
}
|
|
||||||
for (i32 i = 0; i < scrub_max && new_count > undo_count; ++i){
|
|
||||||
view_redo(system, view->models, view);
|
|
||||||
++undo_count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if (do_button(1, state, layout, "+ Undo", 1)){
|
|
||||||
view->widget.timeline.undo_line = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (view->widget.timeline.history_line){
|
|
||||||
if (do_button(3, state, layout, "- History", 1)){
|
|
||||||
view->widget.timeline.history_line = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget_ID wid = make_id(state, 4);
|
|
||||||
if (view->widget.timeline.history_line){
|
|
||||||
i32 new_count;
|
|
||||||
i32 mid = ((file->state.undo.history.edit_count + file->state.undo.edit_history_cursor) >> 1);
|
|
||||||
i32 count = file->state.undo.edit_history_cursor;
|
|
||||||
if (do_undo_slider(wid, state, layout, mid, count, &file->state.undo, &new_count)){
|
|
||||||
for (i32 i = 0; i < scrub_max && new_count < count; ++i){
|
|
||||||
view_history_step(system, view->models, view, hist_backward);
|
|
||||||
}
|
|
||||||
for (i32 i = 0; i < scrub_max && new_count > count; ++i){
|
|
||||||
view_history_step(system, view->models, view, hist_forward);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if (do_button(3, state, layout, "+ History", 1)){
|
|
||||||
view->widget.timeline.history_line = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
|
||||||
draw_file_view_queries(View *view, UI_State *state, UI_Layout *layout){
|
|
||||||
Widget_ID wid;
|
|
||||||
Query_Slot *slot;
|
|
||||||
Query_Bar *bar;
|
|
||||||
i32 i = 1;
|
|
||||||
|
|
||||||
for (slot = view->query_set.used_slot; slot != 0; slot = slot->next){
|
|
||||||
wid = make_id(state, i++);
|
|
||||||
bar = slot->query_bar;
|
|
||||||
do_text_field(wid, state, layout, bar->prompt, bar->string);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void
|
|
||||||
view_show_menu(View *view, Command_Map *gui_map){
|
|
||||||
view->ui_state = {};
|
|
||||||
view->map_for_file = view->map;
|
|
||||||
view->map = gui_map;
|
|
||||||
view->showing_ui = VUI_Menu;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void
|
|
||||||
view_show_config(View *view, Command_Map *gui_map){
|
|
||||||
view->ui_state = {};
|
|
||||||
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, Command_Map *gui_map,
|
|
||||||
Interactive_Action action, Interactive_Interaction interaction, String query){
|
|
||||||
|
|
||||||
Models *models = view->models;
|
|
||||||
|
|
||||||
view->ui_state = {};
|
|
||||||
view->map_for_file = view->map;
|
|
||||||
view->map = gui_map;
|
|
||||||
view->showing_ui = VUI_Interactive;
|
|
||||||
view->finished = 0;
|
|
||||||
|
|
||||||
copy(&view->query, query);
|
|
||||||
view->dest.str[0] = 0;
|
|
||||||
view->dest.size = 0;
|
|
||||||
|
|
||||||
hot_directory_clean_end(&models->hot_directory);
|
|
||||||
hot_directory_reload(system, &models->hot_directory, &models->working_set);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void
|
|
||||||
view_show_theme(View *view, Command_Map *gui_map){
|
|
||||||
view->ui_state = {};
|
|
||||||
view->map_for_file = view->map;
|
|
||||||
view->map = gui_map;
|
|
||||||
view->showing_ui = VUI_Theme;
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
view->color = super_color_create(0xFF000000);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
view_show_menu(View *view, Command_Map *gui_map){
|
view_show_menu(View *view, Command_Map *gui_map){
|
||||||
view->map_for_file = view->map;
|
view->map_for_file = view->map;
|
||||||
|
@ -2835,577 +2725,6 @@ update_highlighting(View *view){
|
||||||
view->highlight.ids[3] = 0;
|
view->highlight.ids[3] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
|
||||||
theme_library_shit(System_Functions *system, Exchange *exchange,
|
|
||||||
View *view, UI_State *state, UI_Layout *layout){
|
|
||||||
|
|
||||||
Models *models = view->models;
|
|
||||||
Mem_Options *mem = &models->mem;
|
|
||||||
|
|
||||||
i32 result = 0;
|
|
||||||
|
|
||||||
Library_UI ui;
|
|
||||||
ui.state = state;
|
|
||||||
ui.layout = layout;
|
|
||||||
|
|
||||||
ui.fonts = models->font_set;
|
|
||||||
ui.hot_directory = &models->hot_directory;
|
|
||||||
ui.styles = &models->styles;
|
|
||||||
|
|
||||||
Color_View_Mode mode = view->color_mode;
|
|
||||||
|
|
||||||
i32_Rect bar_rect = ui.layout->rect;
|
|
||||||
bar_rect.x0 = bar_rect.x1 - 20;
|
|
||||||
do_scroll_bar(ui.state, bar_rect);
|
|
||||||
|
|
||||||
ui.layout->y -= FLOOR32(view->ui_state.view_y);
|
|
||||||
ui.layout->rect.x1 -= 20;
|
|
||||||
|
|
||||||
b32 case_sensitive = 0;
|
|
||||||
|
|
||||||
switch (mode){
|
|
||||||
case CV_Mode_Library:
|
|
||||||
{
|
|
||||||
do_label(ui.state, ui.layout, literal("Current Theme - Click to Edit"));
|
|
||||||
if (do_style_preview(&ui, &models->style)){
|
|
||||||
view->color_mode = CV_Mode_Adjusting;
|
|
||||||
view->ui_state.selected = {};
|
|
||||||
ui.state->view_y = 0;
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
begin_row(ui.layout, 3);
|
|
||||||
if (ui.state->style->name.size >= 1){
|
|
||||||
if (do_button(-2, ui.state, ui.layout, "Save", 2)){
|
|
||||||
//style_library_add(ui.styles, ui.state->style);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
do_button(-2, ui.state, ui.layout, "~Need's Name~", 2);
|
|
||||||
}
|
|
||||||
if (do_button(-3, ui.state, ui.layout, "Import", 2)){
|
|
||||||
view->color_mode = CV_Mode_Import_File;
|
|
||||||
hot_directory_clean_end(&models->hot_directory);
|
|
||||||
hot_directory_reload(system, &models->hot_directory, &models->working_set);
|
|
||||||
}
|
|
||||||
if (do_button(-4, ui.state, ui.layout, "Export", 2)){
|
|
||||||
view->color_mode = CV_Mode_Export;
|
|
||||||
hot_directory_clean_end(&models->hot_directory);
|
|
||||||
hot_directory_reload(system, &models->hot_directory, &models->working_set);
|
|
||||||
memset(view->import_export_check, 0, sizeof(view->import_export_check));
|
|
||||||
}
|
|
||||||
|
|
||||||
do_label(ui.state, ui.layout, literal("Theme Library - Click to Select"));
|
|
||||||
|
|
||||||
i32 style_count = models->styles.count;
|
|
||||||
Style *style = models->styles.styles;
|
|
||||||
for (i32 i = 0; i < style_count; ++i, ++style){
|
|
||||||
if (do_style_preview(&ui, style)){
|
|
||||||
style_copy(&models->style, style);
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case CV_Mode_Import_File:
|
|
||||||
{
|
|
||||||
do_label(ui.state, ui.layout, literal("Current Theme"));
|
|
||||||
do_style_preview(&ui, &models->style);
|
|
||||||
|
|
||||||
b32 file_selected = 0;
|
|
||||||
|
|
||||||
do_label(ui.state, ui.layout, literal("Import Which File?"));
|
|
||||||
begin_row(ui.layout, 2);
|
|
||||||
if (do_button(-2, ui.state, ui.layout, "*.p4c only", 2, 1, view->p4c_only)){
|
|
||||||
view->p4c_only = !view->p4c_only;
|
|
||||||
}
|
|
||||||
if (do_button(-3, ui.state, ui.layout, "Cancel", 2)){
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
}
|
|
||||||
|
|
||||||
b32 new_dir = 0;
|
|
||||||
if (do_file_list_box(system, ui.state, ui.layout,
|
|
||||||
ui.hot_directory, view->p4c_only, 1, case_sensitive,
|
|
||||||
&new_dir, &file_selected, 0)){
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_dir){
|
|
||||||
hot_directory_reload(system, ui.hot_directory, ui.state->working_set);
|
|
||||||
}
|
|
||||||
if (file_selected){
|
|
||||||
memset(&view->inspecting_styles, 0, sizeof(Style_Library));
|
|
||||||
memset(view->import_export_check, 1,
|
|
||||||
sizeof(view->import_export_check));
|
|
||||||
|
|
||||||
view->import_file_id = exchange_request_file(exchange,
|
|
||||||
models->hot_directory.string.str,
|
|
||||||
models->hot_directory.string.size);
|
|
||||||
view->color_mode = CV_Mode_Import_Wait;
|
|
||||||
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case CV_Mode_Import_Wait:
|
|
||||||
{
|
|
||||||
Style *styles = view->inspecting_styles.styles;
|
|
||||||
Data file = {};
|
|
||||||
i32 file_max = 0;
|
|
||||||
|
|
||||||
i32 count = 0;
|
|
||||||
i32 max = ArrayCount(view->inspecting_styles.styles);
|
|
||||||
|
|
||||||
AllowLocal(styles);
|
|
||||||
AllowLocal(max);
|
|
||||||
|
|
||||||
if (exchange_file_ready(exchange, view->import_file_id,
|
|
||||||
&file.data, &file.size, &file_max)){
|
|
||||||
if (file.data){
|
|
||||||
if (0 /* && style_library_import(file, ui.fonts, styles, max, &count) */){
|
|
||||||
view->color_mode = CV_Mode_Import;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
}
|
|
||||||
view->inspecting_styles.count = count;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
Assert(!"this shouldn't happen!");
|
|
||||||
}
|
|
||||||
|
|
||||||
exchange_free_file(exchange, view->import_file_id);
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case CV_Mode_Export_File:
|
|
||||||
{
|
|
||||||
do_label(ui.state, ui.layout, literal("Current Theme"));
|
|
||||||
do_style_preview(&ui, &models->style);
|
|
||||||
|
|
||||||
b32 file_selected = 0;
|
|
||||||
|
|
||||||
do_label(ui.state, ui.layout, literal("Export File Name?"));
|
|
||||||
begin_row(ui.layout, 2);
|
|
||||||
if (do_button(-2, ui.state, ui.layout, "Finish Export", 2)){
|
|
||||||
file_selected = 1;
|
|
||||||
}
|
|
||||||
if (do_button(-3, ui.state, ui.layout, "Cancel", 2)){
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
}
|
|
||||||
|
|
||||||
b32 new_dir = 0;
|
|
||||||
if (do_file_list_box(system, ui.state, ui.layout,
|
|
||||||
ui.hot_directory, 1, 1, case_sensitive,
|
|
||||||
&new_dir, &file_selected, ".p4c")){
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_dir){
|
|
||||||
hot_directory_reload(system,
|
|
||||||
ui.hot_directory, ui.state->working_set);
|
|
||||||
}
|
|
||||||
if (file_selected){
|
|
||||||
i32 count = ui.styles->count;
|
|
||||||
Temp_Memory temp = begin_temp_memory(&mem->part);
|
|
||||||
Style **styles = push_array(&mem->part, Style*, sizeof(Style*)*count);
|
|
||||||
|
|
||||||
Style *style = ui.styles->styles;
|
|
||||||
b8 *export_check = view->import_export_check;
|
|
||||||
i32 export_count = 0;
|
|
||||||
for (i32 i = 0; i < count; ++i, ++style){
|
|
||||||
if (export_check[i]){
|
|
||||||
styles[export_count++] = style;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
char *data = push_array(&mem->part, char, ui.hot_directory->string.size + 5);
|
|
||||||
String str = make_string(data, 0, ui.hot_directory->string.size + 5);
|
|
||||||
copy(&str, ui.hot_directory->string);
|
|
||||||
append(&str, make_lit_string(".p4c"));
|
|
||||||
/*style_library_export(system, exchange, mem, &target->font_set, str.str, styles, export_count);*/
|
|
||||||
|
|
||||||
end_temp_memory(temp);
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case CV_Mode_Import:
|
|
||||||
{
|
|
||||||
do_label(ui.state, ui.layout, literal("Current Theme"));
|
|
||||||
do_style_preview(&ui, &models->style);
|
|
||||||
|
|
||||||
i32 style_count = view->inspecting_styles.count;
|
|
||||||
Style *styles = view->inspecting_styles.styles;
|
|
||||||
b8 *import_check = view->import_export_check;
|
|
||||||
|
|
||||||
do_label(ui.state, ui.layout, literal("Pack"));
|
|
||||||
begin_row(ui.layout, 2);
|
|
||||||
if (do_button(-2, ui.state, ui.layout, "Finish Import", 2)){
|
|
||||||
Style *style = styles;
|
|
||||||
for (i32 i = 0; i < style_count; ++i, ++style){
|
|
||||||
//if (import_check[i]) style_library_add(ui.styles, style);
|
|
||||||
}
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
}
|
|
||||||
if (do_button(-3, ui.state, ui.layout, "Cancel", 2)){
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
}
|
|
||||||
|
|
||||||
Style *style = styles;
|
|
||||||
for (i32 i = 0; i < style_count; ++i, ++style){
|
|
||||||
if (do_style_preview(&ui, style, import_check[i])){
|
|
||||||
import_check[i] = !import_check[i];
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case CV_Mode_Export:
|
|
||||||
{
|
|
||||||
do_label(ui.state, ui.layout, literal("Current Theme"));
|
|
||||||
do_style_preview(&ui, &models->style);
|
|
||||||
|
|
||||||
do_label(ui.state, ui.layout, literal("Export Which Themes?"));
|
|
||||||
begin_row(ui.layout, 2);
|
|
||||||
if (do_button(-2, ui.state, ui.layout, "Export", 2)){
|
|
||||||
view->color_mode = CV_Mode_Export_File;
|
|
||||||
}
|
|
||||||
if (do_button(-3, ui.state, ui.layout, "Cancel", 2)){
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
}
|
|
||||||
|
|
||||||
i32 style_count = models->styles.count;
|
|
||||||
Style *style = models->styles.styles;
|
|
||||||
b8 *export_check = view->import_export_check;
|
|
||||||
for (i32 i = 0; i < style_count; ++i, ++style){
|
|
||||||
if (do_style_preview(&ui, style, export_check[i])){
|
|
||||||
export_check[i] = !export_check[i];
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal b32
|
|
||||||
theme_adjusting_shit(View *view, UI_State *state, UI_Layout *layout, Super_Color *color){
|
|
||||||
update_highlighting(view);
|
|
||||||
|
|
||||||
Models *models = view->models;
|
|
||||||
|
|
||||||
Style *style = &models->style;
|
|
||||||
i32 result = 0;
|
|
||||||
|
|
||||||
Color_UI ui;
|
|
||||||
ui.state = state;
|
|
||||||
ui.layout = layout;
|
|
||||||
|
|
||||||
ui.fonts = models->font_set;
|
|
||||||
ui.global_font = &models->global_font;
|
|
||||||
ui.highlight = view->highlight;
|
|
||||||
ui.color = view->color;
|
|
||||||
ui.has_hover_color = 0;
|
|
||||||
ui.state->sub_id1_change = 0;
|
|
||||||
ui.hex_advance = font_get_max_width(ui.fonts, ui.state->font_id, "0123456789abcdefx");
|
|
||||||
ui.palette = models->palette;
|
|
||||||
ui.palette_size = models->palette_size;
|
|
||||||
|
|
||||||
i32_Rect bar_rect = ui.layout->rect;
|
|
||||||
bar_rect.x0 = bar_rect.x1 - 20;
|
|
||||||
do_scroll_bar(ui.state, bar_rect);
|
|
||||||
|
|
||||||
ui.layout->y -= FLOOR32(view->ui_state.view_y);
|
|
||||||
ui.layout->rect.x1 -= 20;
|
|
||||||
|
|
||||||
if (do_button(-1, ui.state, ui.layout, "Back to Library", 2)){
|
|
||||||
view->color_mode = CV_Mode_Library;
|
|
||||||
ui.state->view_y = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
do_style_name(&ui);
|
|
||||||
do_font_switch(&ui);
|
|
||||||
|
|
||||||
do_color_adjuster(&ui, &style->main.back_color,
|
|
||||||
style->main.default_color, style->main.back_color,
|
|
||||||
"Background");
|
|
||||||
do_color_adjuster(&ui, &style->main.margin_color,
|
|
||||||
style->main.default_color, style->main.margin_color,
|
|
||||||
"Margin");
|
|
||||||
do_color_adjuster(&ui, &style->main.margin_hover_color,
|
|
||||||
style->main.default_color, style->main.margin_hover_color,
|
|
||||||
"Margin Hover");
|
|
||||||
do_color_adjuster(&ui, &style->main.margin_active_color,
|
|
||||||
style->main.default_color, style->main.margin_active_color,
|
|
||||||
"Margin Active");
|
|
||||||
|
|
||||||
do_color_adjuster(&ui, &style->main.cursor_color,
|
|
||||||
style->main.at_cursor_color, style->main.cursor_color,
|
|
||||||
"Cursor");
|
|
||||||
do_color_adjuster(&ui, &style->main.at_cursor_color,
|
|
||||||
style->main.at_cursor_color, style->main.cursor_color,
|
|
||||||
"Text At Cursor");
|
|
||||||
do_color_adjuster(&ui, &style->main.mark_color,
|
|
||||||
style->main.mark_color, style->main.back_color,
|
|
||||||
"Mark");
|
|
||||||
|
|
||||||
do_color_adjuster(&ui, &style->main.highlight_color,
|
|
||||||
style->main.at_highlight_color, style->main.highlight_color,
|
|
||||||
"Highlight");
|
|
||||||
do_color_adjuster(&ui, &style->main.at_highlight_color,
|
|
||||||
style->main.at_highlight_color, style->main.highlight_color,
|
|
||||||
"Text At Highlight");
|
|
||||||
|
|
||||||
do_color_adjuster(&ui, &style->main.default_color,
|
|
||||||
style->main.default_color, style->main.back_color,
|
|
||||||
"Text Default");
|
|
||||||
do_color_adjuster(&ui, &style->main.comment_color,
|
|
||||||
style->main.comment_color, style->main.back_color,
|
|
||||||
"Comment");
|
|
||||||
do_color_adjuster(&ui, &style->main.keyword_color,
|
|
||||||
style->main.keyword_color, style->main.back_color,
|
|
||||||
"Keyword");
|
|
||||||
do_color_adjuster(&ui, &style->main.str_constant_color,
|
|
||||||
style->main.str_constant_color, style->main.back_color,
|
|
||||||
"String Constant");
|
|
||||||
do_color_adjuster(&ui, &style->main.char_constant_color,
|
|
||||||
style->main.char_constant_color, style->main.back_color,
|
|
||||||
"Character Constant");
|
|
||||||
do_color_adjuster(&ui, &style->main.int_constant_color,
|
|
||||||
style->main.int_constant_color, style->main.back_color,
|
|
||||||
"Integer Constant");
|
|
||||||
do_color_adjuster(&ui, &style->main.float_constant_color,
|
|
||||||
style->main.float_constant_color, style->main.back_color,
|
|
||||||
"Float Constant");
|
|
||||||
do_color_adjuster(&ui, &style->main.bool_constant_color,
|
|
||||||
style->main.bool_constant_color, style->main.back_color,
|
|
||||||
"Boolean Constant");
|
|
||||||
do_color_adjuster(&ui, &style->main.preproc_color,
|
|
||||||
style->main.preproc_color, style->main.back_color,
|
|
||||||
"Preprocessor");
|
|
||||||
do_color_adjuster(&ui, &style->main.include_color,
|
|
||||||
style->main.include_color, style->main.back_color,
|
|
||||||
"Include Constant");
|
|
||||||
do_color_adjuster(&ui, &style->main.special_character_color,
|
|
||||||
style->main.special_character_color, style->main.back_color,
|
|
||||||
"Special Character");
|
|
||||||
|
|
||||||
do_color_adjuster(&ui, &style->main.highlight_junk_color,
|
|
||||||
style->main.default_color, style->main.highlight_junk_color,
|
|
||||||
"Junk Highlight");
|
|
||||||
do_color_adjuster(&ui, &style->main.highlight_white_color,
|
|
||||||
style->main.default_color, style->main.highlight_white_color,
|
|
||||||
"Whitespace Highlight");
|
|
||||||
|
|
||||||
do_color_adjuster(&ui, &style->main.paste_color,
|
|
||||||
style->main.paste_color, style->main.back_color,
|
|
||||||
"Paste Color");
|
|
||||||
|
|
||||||
Interactive_Style *bar_style = &style->main.file_info_style;
|
|
||||||
do_color_adjuster(&ui, &bar_style->bar_color,
|
|
||||||
bar_style->base_color, bar_style->bar_color,
|
|
||||||
"Bar");
|
|
||||||
do_color_adjuster(&ui, &bar_style->base_color,
|
|
||||||
bar_style->base_color, bar_style->bar_color,
|
|
||||||
"Bar Text");
|
|
||||||
do_color_adjuster(&ui, &bar_style->pop1_color,
|
|
||||||
bar_style->pop1_color, bar_style->bar_color,
|
|
||||||
"Bar Pop 1");
|
|
||||||
do_color_adjuster(&ui, &bar_style->pop2_color,
|
|
||||||
bar_style->pop2_color, bar_style->bar_color,
|
|
||||||
"Bar Pop 2");
|
|
||||||
|
|
||||||
*color = ui.hover_color;
|
|
||||||
|
|
||||||
return (result);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal b32
|
|
||||||
theme_shit(System_Functions *system, Exchange *exchange,
|
|
||||||
View *view, View *active, UI_State *state, UI_Layout *layout, Super_Color *color){
|
|
||||||
b32 result = 0;
|
|
||||||
|
|
||||||
if (view != active){
|
|
||||||
view->hot_file_view = active;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (view->color_mode){
|
|
||||||
case CV_Mode_Library:
|
|
||||||
case CV_Mode_Import_File:
|
|
||||||
case CV_Mode_Export_File:
|
|
||||||
case CV_Mode_Import:
|
|
||||||
case CV_Mode_Export:
|
|
||||||
case CV_Mode_Import_Wait:
|
|
||||||
if (theme_library_shit(system, exchange, view, state, layout)){
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CV_Mode_Adjusting:
|
|
||||||
if (theme_adjusting_shit(view, state, layout, color)){
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal b32
|
|
||||||
interactive_shit(System_Functions *system, View *view, UI_State *state, UI_Layout *layout){
|
|
||||||
b32 result = 0;
|
|
||||||
b32 new_dir = 0;
|
|
||||||
b32 complete = 0;
|
|
||||||
|
|
||||||
Models *models = view->models;
|
|
||||||
|
|
||||||
do_label(state, layout, view->query, 1.f);
|
|
||||||
|
|
||||||
b32 case_sensitive = 0;
|
|
||||||
|
|
||||||
b32 input_stage = state->input_stage;
|
|
||||||
Key_Summary *keys = state->keys;
|
|
||||||
|
|
||||||
switch (view->interaction){
|
|
||||||
case IInt_Sys_File_List:
|
|
||||||
{
|
|
||||||
b32 is_new = (view->action == IAct_New);
|
|
||||||
|
|
||||||
if (do_file_list_box(system, state, layout,
|
|
||||||
&models->hot_directory, 0, !is_new, case_sensitive,
|
|
||||||
&new_dir, &complete, 0)){
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
if (new_dir){
|
|
||||||
hot_directory_reload(system, &models->hot_directory, &models->working_set);
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case IInt_Live_File_List:
|
|
||||||
{
|
|
||||||
if (do_live_file_list_box(system, state, layout, &models->working_set, &view->dest, &complete)){
|
|
||||||
result = 1;
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case IInt_Sure_To_Close:
|
|
||||||
{
|
|
||||||
i32 action = -1;
|
|
||||||
char s_[256];
|
|
||||||
String s;
|
|
||||||
s = make_fixed_width_string(s_);
|
|
||||||
append(&s, "There are unsaved changes in, close anyway?");
|
|
||||||
do_label(state, layout, s, 1.f);
|
|
||||||
|
|
||||||
i32 id = 0;
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("(Y)es"))){
|
|
||||||
action = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("(N)o"))){
|
|
||||||
action = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (action == -1 && input_stage){
|
|
||||||
i32 key_count = keys->count;
|
|
||||||
for (i32 i = 0; i < key_count; ++i){
|
|
||||||
Key_Event_Data key = keys->keys[i];
|
|
||||||
switch (key.character){
|
|
||||||
case 'y': case 'Y': action = 0; break;
|
|
||||||
case 'n': case 'N': action = 1; break;
|
|
||||||
}
|
|
||||||
if (action == -1 && key.keycode == key_esc) action = 1;
|
|
||||||
if (action != -1) break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (action != -1){
|
|
||||||
complete = 1;
|
|
||||||
view->user_action = action;
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
|
|
||||||
case IInt_Sure_To_Kill:
|
|
||||||
{
|
|
||||||
i32 action = -1;
|
|
||||||
char s_[256];
|
|
||||||
String s;
|
|
||||||
s = make_fixed_width_string(s_);
|
|
||||||
append(&s, view->dest);
|
|
||||||
append(&s, " has unsaved changes, kill it?");
|
|
||||||
do_label(state, layout, s, 1.f);
|
|
||||||
|
|
||||||
i32 id = 0;
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("(Y)es"))){
|
|
||||||
action = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("(N)o"))){
|
|
||||||
action = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("(S)ave and kill"))){
|
|
||||||
action = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (action == -1 && input_stage){
|
|
||||||
i32 key_count = keys->count;
|
|
||||||
for (i32 i = 0; i < key_count; ++i){
|
|
||||||
Key_Event_Data key = keys->keys[i];
|
|
||||||
switch (key.character){
|
|
||||||
case 'y': case 'Y': action = 0; break;
|
|
||||||
case 'n': case 'N': action = 1; break;
|
|
||||||
case 's': case 'S': action = 2; break;
|
|
||||||
}
|
|
||||||
if (action == -1 && key.keycode == key_esc) action = 1;
|
|
||||||
if (action != -1) break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (action != -1){
|
|
||||||
complete = 1;
|
|
||||||
view->user_action = action;
|
|
||||||
}
|
|
||||||
}break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (complete){
|
|
||||||
view->finished = 1;
|
|
||||||
interactive_view_complete(view);
|
|
||||||
result= 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
|
||||||
menu_shit(View *view, UI_State *state, UI_Layout *layout){
|
|
||||||
i32 id = 0;
|
|
||||||
|
|
||||||
do_label(state, layout, literal("Menu"), 2.f);
|
|
||||||
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("Theme Options"))){
|
|
||||||
view_show_theme(view, view->map);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (do_list_option(++id, state, layout, make_lit_string("Keyboard Layout Options"))){
|
|
||||||
view_show_config(view, view->map);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
|
||||||
config_shit(View *view, UI_State *state, UI_Layout *layout){
|
|
||||||
i32 id = 0;
|
|
||||||
Models *models = view->models;
|
|
||||||
|
|
||||||
do_label(state, layout, literal("Config"), 2.f);
|
|
||||||
|
|
||||||
if (do_checkbox_list_option(++id, state, layout, make_lit_string("Left Ctrl + Left Alt = AltGr"),
|
|
||||||
models->settings.lctrl_lalt_is_altgr)){
|
|
||||||
models->settings.lctrl_lalt_is_altgr = !models->settings.lctrl_lalt_is_altgr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct File_Bar{
|
struct File_Bar{
|
||||||
|
@ -3938,8 +3257,8 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
|
||||||
message = make_lit_string("Current Theme - Click to Edit");
|
message = make_lit_string("Current Theme - Click to Edit");
|
||||||
gui_do_text_field(target, message, empty_string);
|
gui_do_text_field(target, message, empty_string);
|
||||||
|
|
||||||
id.id[0] = (u64)(&models->style);
|
id.id[0] = (u64)(main_style(models));
|
||||||
if (gui_do_style_preview(target, id, &models->style)){
|
if (gui_do_style_preview(target, id, 0)){
|
||||||
view->color_mode = CV_Mode_Adjusting;
|
view->color_mode = CV_Mode_Adjusting;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3958,13 +3277,14 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
|
||||||
|
|
||||||
{
|
{
|
||||||
i32 count = models->styles.count;
|
i32 count = models->styles.count;
|
||||||
Style *style = models->styles.styles;
|
Style *style;
|
||||||
i32 i;
|
i32 i;
|
||||||
|
|
||||||
for (i = 0; i < count; ++i, ++style){
|
for (i = 1; i < count; ++i, ++style){
|
||||||
|
style = get_style(models, i);
|
||||||
id.id[0] = (u64)(style);
|
id.id[0] = (u64)(style);
|
||||||
if (gui_do_style_preview(target, id, style)){
|
if (gui_do_style_preview(target, id, i)){
|
||||||
style_copy(&models->style, style);
|
style_copy(main_style(models), style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4012,7 +3332,7 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
|
||||||
|
|
||||||
case CV_Mode_Adjusting:
|
case CV_Mode_Adjusting:
|
||||||
{
|
{
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
u32 *edit_color = 0;
|
u32 *edit_color = 0;
|
||||||
u32 *fore = 0, *back = 0;
|
u32 *fore = 0, *back = 0;
|
||||||
i32 i = 0;
|
i32 i = 0;
|
||||||
|
@ -4144,36 +3464,9 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
|
||||||
gui_get_scroll_vars(target, view->showing_ui, &view->gui_scroll);
|
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);
|
gui_begin_scrollable(target, view->showing_ui, view->gui_scroll, 9.f * view->font_height);
|
||||||
|
|
||||||
// TODO(allen): Deduplicate. Perhaps we want a standard list helper?
|
|
||||||
id.id[0] = (u64)(hdir) + 1;
|
id.id[0] = (u64)(hdir) + 1;
|
||||||
if (gui_begin_list(target, id, view->list_i, 0, &update)){
|
if (gui_begin_list(target, id, view->list_i, 0, &update)){
|
||||||
gui_standard_list(target, id, &keys, &view->list_i, &update);
|
gui_standard_list(target, id, &keys, &view->list_i, &update);
|
||||||
#if 0
|
|
||||||
if (update.has_adjustment){
|
|
||||||
view->list_i = update.adjustment_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
b32 indirectly_activate = 0;
|
|
||||||
for (i32 j = 0; j < keys.count; ++j){
|
|
||||||
i16 key = keys.keys[j].keycode;
|
|
||||||
switch (key){
|
|
||||||
case key_up:
|
|
||||||
--view->list_i;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case key_down:
|
|
||||||
++view->list_i;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\n':
|
|
||||||
indirectly_activate = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gui_rollback(target, &update);
|
|
||||||
gui_begin_list(target, id, view->list_i, indirectly_activate, 0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -4243,36 +3536,9 @@ step_file_view(System_Functions *system, View *view, View *active_view, Input_Su
|
||||||
gui_get_scroll_vars(target, view->showing_ui, &view->gui_scroll);
|
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);
|
gui_begin_scrollable(target, view->showing_ui, view->gui_scroll, 9.f * view->font_height);
|
||||||
|
|
||||||
// TODO(allen): Deduplicate. Perhaps we want a standard list helper?
|
|
||||||
id.id[0] = (u64)(working_set) + 1;
|
id.id[0] = (u64)(working_set) + 1;
|
||||||
if (gui_begin_list(target, id, view->list_i, 0, &update)){
|
if (gui_begin_list(target, id, view->list_i, 0, &update)){
|
||||||
gui_standard_list(target, id, &keys, &view->list_i, &update);
|
gui_standard_list(target, id, &keys, &view->list_i, &update);
|
||||||
#if 0
|
|
||||||
if (update.has_adjustment){
|
|
||||||
view->list_i = update.adjustment_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
b32 indirectly_activate = 0;
|
|
||||||
for (i32 j = 0; j < keys.count; ++j){
|
|
||||||
i16 key = keys.keys[j].keycode;
|
|
||||||
switch (key){
|
|
||||||
case key_up:
|
|
||||||
--view->list_i;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case key_down:
|
|
||||||
++view->list_i;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '\n':
|
|
||||||
indirectly_activate = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gui_rollback(target, &update);
|
|
||||||
gui_begin_list(target, id, view->list_i, indirectly_activate, 0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
used_nodes = &working_set->used_sentinel;
|
used_nodes = &working_set->used_sentinel;
|
||||||
|
@ -4680,7 +3946,7 @@ internal i32
|
||||||
draw_file_loaded(View *view, i32_Rect rect, b32 is_active, Render_Target *target){
|
draw_file_loaded(View *view, i32_Rect rect, b32 is_active, Render_Target *target){
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Editing_File *file = view->file_data.file;
|
Editing_File *file = view->file_data.file;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
i32 line_height = view->font_height;
|
i32 line_height = view->font_height;
|
||||||
|
|
||||||
i32 max_x = rect.x1 - rect.x0;
|
i32 max_x = rect.x1 - rect.x0;
|
||||||
|
@ -4847,7 +4113,7 @@ draw_file_loaded(View *view, i32_Rect rect, b32 is_active, Render_Target *target
|
||||||
internal void
|
internal void
|
||||||
draw_text_field(Render_Target *target, View *view, i32_Rect rect, String p, String t){
|
draw_text_field(Render_Target *target, View *view, i32_Rect rect, String p, String t){
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
|
|
||||||
u32 back_color = style->main.margin_color;
|
u32 back_color = style->main.margin_color;
|
||||||
u32 text1_color = style->main.default_color;
|
u32 text1_color = style->main.default_color;
|
||||||
|
@ -4868,7 +4134,7 @@ draw_text_field(Render_Target *target, View *view, i32_Rect rect, String p, Stri
|
||||||
internal void
|
internal void
|
||||||
draw_text_with_cursor(Render_Target *target, View *view, i32_Rect rect, String s, i32 pos){
|
draw_text_with_cursor(Render_Target *target, View *view, i32_Rect rect, String s, i32 pos){
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
|
|
||||||
u32 back_color = style->main.margin_color;
|
u32 back_color = style->main.margin_color;
|
||||||
u32 text_color = style->main.default_color;
|
u32 text_color = style->main.default_color;
|
||||||
|
@ -4915,7 +4181,8 @@ draw_file_bar(Render_Target *target, View *view, Editing_File *file, i32_Rect re
|
||||||
File_Bar bar;
|
File_Bar bar;
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Style_Font *font = &models->global_font;
|
Style_Font *font = &models->global_font;
|
||||||
Interactive_Style bar_style = models->style.main.file_info_style;
|
Style *style = main_style(models);
|
||||||
|
Interactive_Style bar_style = style->main.file_info_style;
|
||||||
|
|
||||||
u32 back_color = bar_style.bar_color;
|
u32 back_color = bar_style.bar_color;
|
||||||
u32 base_color = bar_style.base_color;
|
u32 base_color = bar_style.base_color;
|
||||||
|
@ -5024,7 +4291,7 @@ internal void
|
||||||
draw_font_button(GUI_Target *gui_target, Render_Target *target, View *view,
|
draw_font_button(GUI_Target *gui_target, Render_Target *target, View *view,
|
||||||
i32_Rect rect, GUI_id id, i16 font_id, String text){
|
i32_Rect rect, GUI_id id, i16 font_id, String text){
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
|
|
||||||
i32 active_level = gui_active_level(gui_target, id);
|
i32 active_level = gui_active_level(gui_target, id);
|
||||||
|
|
||||||
|
@ -5041,7 +4308,7 @@ internal void
|
||||||
draw_fat_option_block(GUI_Target *gui_target, Render_Target *target, View *view, i32_Rect rect, GUI_id id,
|
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){
|
String text, String pop, i8 checkbox = -1){
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
|
|
||||||
i32 active_level = gui_active_level(gui_target, id);
|
i32 active_level = gui_active_level(gui_target, id);
|
||||||
i16 font_id = models->global_font.font_id;
|
i16 font_id = models->global_font.font_id;
|
||||||
|
@ -5082,7 +4349,7 @@ draw_fat_option_block(GUI_Target *gui_target, Render_Target *target, View *view,
|
||||||
internal void
|
internal void
|
||||||
draw_button(GUI_Target *gui_target, Render_Target *target, View *view, i32_Rect rect, GUI_id id, String text){
|
draw_button(GUI_Target *gui_target, Render_Target *target, View *view, i32_Rect rect, GUI_id id, String text){
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
|
|
||||||
i32 active_level = gui_active_level(gui_target, id);
|
i32 active_level = gui_active_level(gui_target, id);
|
||||||
i16 font_id = models->global_font.font_id;
|
i16 font_id = models->global_font.font_id;
|
||||||
|
@ -5252,13 +4519,14 @@ do_render_file_view(System_Functions *system, Exchange *exchange,
|
||||||
case guicom_style_preview:
|
case guicom_style_preview:
|
||||||
{
|
{
|
||||||
GUI_Interactive *b = (GUI_Interactive*)h;
|
GUI_Interactive *b = (GUI_Interactive*)h;
|
||||||
Style *style = (Style*)(b + 1);
|
i32 style_index = *(i32*)(b + 1);
|
||||||
|
Style *style = get_style(view->models, style_index);
|
||||||
|
|
||||||
draw_style_preview(gui_target, target, view, gui_session.rect, b->id, style);
|
draw_style_preview(gui_target, target, view, gui_session.rect, b->id, style);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
case guicom_fixed_option_checkbox:
|
|
||||||
case guicom_fixed_option:
|
case guicom_fixed_option:
|
||||||
|
case guicom_fixed_option_checkbox:
|
||||||
{
|
{
|
||||||
GUI_Interactive *b = (GUI_Interactive*)h;
|
GUI_Interactive *b = (GUI_Interactive*)h;
|
||||||
void *ptr = (b + 1);
|
void *ptr = (b + 1);
|
||||||
|
@ -5285,7 +4553,7 @@ do_render_file_view(System_Functions *system, Exchange *exchange,
|
||||||
case guicom_scrollable:
|
case guicom_scrollable:
|
||||||
{
|
{
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
|
|
||||||
u32 back;
|
u32 back;
|
||||||
u32 outline;
|
u32 outline;
|
||||||
|
@ -5310,7 +4578,7 @@ do_render_file_view(System_Functions *system, Exchange *exchange,
|
||||||
{
|
{
|
||||||
GUI_id id;
|
GUI_id id;
|
||||||
Models *models = view->models;
|
Models *models = view->models;
|
||||||
Style *style = &models->style;
|
Style *style = main_style(models);
|
||||||
i32_Rect box = gui_session.rect;
|
i32_Rect box = gui_session.rect;
|
||||||
|
|
||||||
i32 active_level;
|
i32 active_level;
|
||||||
|
|
10
4ed_gui.cpp
10
4ed_gui.cpp
|
@ -349,12 +349,6 @@ gui_push_button_command(GUI_Target *target, i32 type, GUI_id id){
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
|
||||||
gui_push_style(GUI_Target *target, GUI_Header *h, Style *style){
|
|
||||||
Style *new_style = (Style*)gui_push_item(target, h, 0, sizeof(Style));
|
|
||||||
style_copy(new_style, style);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
gui_push_string(GUI_Target *target, GUI_Header *h, String s, i32 extra){
|
gui_push_string(GUI_Target *target, GUI_Header *h, String s, i32 extra){
|
||||||
u8 *start, *end, *str_start;
|
u8 *start, *end, *str_start;
|
||||||
|
@ -572,11 +566,11 @@ gui_do_fixed_option_checkbox(GUI_Target *target, GUI_id id, String message, char
|
||||||
}
|
}
|
||||||
|
|
||||||
internal b32
|
internal b32
|
||||||
gui_do_style_preview(GUI_Target *target, GUI_id id, Style *style){
|
gui_do_style_preview(GUI_Target *target, GUI_id id, i32 style_index){
|
||||||
b32 result = 0;
|
b32 result = 0;
|
||||||
GUI_Interactive *b = gui_push_button_command(target, guicom_style_preview, id);
|
GUI_Interactive *b = gui_push_button_command(target, guicom_style_preview, id);
|
||||||
GUI_Header *h = (GUI_Header*)b;
|
GUI_Header *h = (GUI_Header*)b;
|
||||||
gui_push_style(target, h, style);
|
gui_push_item(target, h, &style_index, sizeof(style_index));
|
||||||
gui_align(target, h);
|
gui_align(target, h);
|
||||||
|
|
||||||
if (gui_id_eq(id, target->active)){
|
if (gui_id_eq(id, target->active)){
|
||||||
|
|
|
@ -9,10 +9,6 @@
|
||||||
|
|
||||||
// TOP
|
// TOP
|
||||||
|
|
||||||
// TODO(allen):
|
|
||||||
// Font changing UI should be in the library menu now, it's not tied to the fonts any more
|
|
||||||
// Get the import export stuff up and running for styles again
|
|
||||||
|
|
||||||
struct Style_Font{
|
struct Style_Font{
|
||||||
i16 font_id;
|
i16 font_id;
|
||||||
i16 font_changed;
|
i16 font_changed;
|
||||||
|
|
Loading…
Reference in New Issue