35 lines
1.3 KiB
C
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);
|
|
}
|