Cleanup and ui bar
This commit is contained in:
@@ -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) {
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user