gear/src/ui/console/draw.c
2024-08-31 17:42:56 +12:00

35 lines
1.3 KiB
C

#include <gear/ui/console.h>
#include <gear/ui/gui.h>
void g_console_draw(g_gui_context* ctx, g_gui_layer* layer) {
g_console* console = layer->data;
if(console->input.size >= console->input.capacity) {
sl_vec_grow(console->input);
}
if(console->output.size >= console->output.capacity) {
sl_vec_grow(console->input);
}
if (nk_begin(ctx, "Console", nk_rect(50, 50, 500, 500),
NK_WINDOW_BORDER | NK_WINDOW_MOVABLE | NK_WINDOW_CLOSABLE | NK_WINDOW_SCALABLE)) {
float frame_height = nk_window_get_content_region(ctx).h;
nk_layout_row_dynamic(ctx, frame_height - 42.5f, 1);
snk_edit_string(ctx, NK_EDIT_CLIPBOARD | NK_EDIT_SELECTABLE | NK_EDIT_MULTILINE,
console->output.data, (i32*)(&console->output.size),
console->output.size + 1, nk_filter_default);
nk_layout_row_dynamic(ctx, 30.0f, 1);
enum nk_edit_events event = snk_edit_string(ctx, NK_EDIT_FIELD | NK_EDIT_SIG_ENTER,
console->input.data, (i32*)(&console->input.size),
console->input.size + 2, nk_filter_default);
if(event & NK_EDIT_COMMITED) {
log_info("cmd: %s", sl_c_str(console->input));
console->input.size = 0;
}
}
nk_end(ctx);
}