Cleanup and ui bar

This commit is contained in:
2026-01-03 17:46:04 +00:00
parent 0390a1bc5d
commit ac04754318
18 changed files with 210 additions and 77 deletions

View File

@@ -1 +1,96 @@
#include "ui/bar.h"
#include "io/sysio.h"
#include "main.h"
void Bar::render() {
Editor *editor = editors[current_editor];
uint32_t row = screen.row - 2;
uint32_t col = 0;
uint32_t width = screen.col;
uint32_t color = 0;
uint32_t black = 0x0b0e14;
uint32_t grey = 0x33363c;
uint32_t dark_grey = 0x24272d;
uint32_t name_color = 0xced4df;
uint32_t lang_color = editor->lang.color;
const char *symbol = "󱓧 ";
const char *name = "EDITOR";
switch (mode) {
case NORMAL:
color = 0x82AAFF;
symbol = "";
name = "NORMAL";
break;
case INSERT:
color = 0xFF8F40;
symbol = "󱓧 ";
name = "INSERT";
break;
case SELECT:
color = 0x9ADE7A;
symbol = "󱩧 ";
name = "SELECT";
break;
case RUNNER:
color = 0xFFD700;
symbol = "";
name = "RUNNER";
break;
case JUMPER:
color = 0xF29CC3;
symbol = "";
name = "JUMPER";
break;
}
update(row, col, " ", black, color, CF_BOLD);
update(row, ++col, symbol, black, color, CF_BOLD);
update(row, ++col, "\x1b", black, color, CF_BOLD);
update(row, ++col, " ", black, color, CF_BOLD);
for (uint32_t i = 0; i < 6; i++)
update(row, ++col, {name[i], 0}, black, color, CF_BOLD);
update(row, ++col, " ", black, color, CF_BOLD);
update(row, ++col, "", color, grey, CF_BOLD);
update(row, ++col, "", grey, dark_grey, CF_BOLD);
update(row, ++col, " ", name_color, dark_grey, CF_BOLD);
update(row, ++col, editor->lang.symbol, lang_color, dark_grey, 0);
update(row, ++col, "\x1b", lang_color, dark_grey, 0);
update(row, ++col, " ", name_color, dark_grey, CF_BOLD);
std::string filename = filename_from_path(editor->filename);
for (uint32_t i = 0; i < filename.length(); i++)
update(row, ++col, {filename[i], 0}, name_color, dark_grey, CF_BOLD);
update(row, ++col, " ", name_color, dark_grey, CF_BOLD);
update(row, ++col, "", dark_grey, 1, CF_BOLD);
}
void Bar::handle(KeyEvent event) {
if (event.key_type == KEY_CHAR && event.len == 1) {
if (event.c[0] == 0x1B) {
mode = NORMAL;
} else if (event.c[0] == '\n' || event.c[0] == '\r') {
// execute command while stripping starting `[:;]`
mode = NORMAL;
command = "";
} else if (isprint((unsigned char)(event.c[0]))) {
} else if (event.c[0] == 0x7F || event.c[0] == 0x08) { // backspace
}
} else if (event.key_type == KEY_SPECIAL) {
switch (event.special_key) {
case KEY_LEFT:
if (command.length() > 0)
cursor--;
break;
case KEY_RIGHT:
if (cursor < command.length())
cursor++;
break;
case KEY_UP:
// TODO: history
break;
case KEY_DOWN:
// TODO: history
break;
}
} else if (event.key_type == KEY_PASTE) {
} else if (event.key_type == KEY_MOUSE) {
}
}