aboutsummaryrefslogtreecommitdiff
path: root/ui/curses
diff options
context:
space:
mode:
Diffstat (limited to 'ui/curses')
-rw-r--r--ui/curses/ui.c30
-rw-r--r--ui/curses/ui_vars.py7
-rw-r--r--ui/curses/vars.py3
3 files changed, 26 insertions, 14 deletions
diff --git a/ui/curses/ui.c b/ui/curses/ui.c
index 3564ef3..dda6c5e 100644
--- a/ui/curses/ui.c
+++ b/ui/curses/ui.c
@@ -1,3 +1,6 @@
+#include <curses.h>
+#include <locale.h>
+
#include "logger.c"
#define LOG_LINE_COUNT 1024
@@ -28,7 +31,6 @@ enum {
PAIR_NOUSE,
PAIR_NORMAL,
PAIR_HEADER,
- PAIR_WARN,
PAIR_LIVE_PROC,
PAIR_SELECTED_PROC,
PAIR_FREE_CELL,
@@ -38,6 +40,8 @@ enum {
PAIR_SELECTED_MB2,
PAIR_SELECTED_IP,
PAIR_SELECTED_SP,
+ PAIR_INFO,
+ PAIR_WARN,
};
// GFX globals
@@ -69,6 +73,7 @@ uint64_t g_wcursor_pointed;
uint64_t g_log_cnt;
unsigned g_log_ptr;
unsigned g_log_scroll;
+enum LogLevel g_log_levels[LOG_LINE_COUNT];
char g_logs[LOG_LINE_COUNT][LOG_LINE_SIZE];
uint64_t g_vlin;
uint64_t g_vsiz;
@@ -658,7 +663,7 @@ void ui_print_wcursor_bar(void) {
uint64_t caddr = cpos * g_wrld_zoom + g_wrld_pos;
uint8_t cbyte = mvec_get_byte(core, caddr);
- if (mvec_is_alloc(core, caddr)) {
+ if (caddr < MVEC_SIZE && mvec_is_alloc(core, caddr)) {
g_wcursor_pointed = mvec_get_owner(core, caddr);
snprintf(cownr, PROC_FIELD_WIDTH, "%#lx", g_wcursor_pointed);
} else {
@@ -796,13 +801,13 @@ void ui_print_ipc(int l) {
// ----------------------------------------------------------------------------
void ui_info_impl(const char *format, ...) {
assert(format);
- assert(false);
va_list args;
va_start(args, format);
- log_msg_to_buff(g_logs[g_log_ptr], LOG_LINE_SIZE, LOG_INFO, format, args);
+ log_msg_to_buff(g_logs[g_log_ptr], LOG_LINE_SIZE, LOG_INFO, false, format, args);
va_end(args);
+ g_log_levels[g_log_ptr] = LOG_INFO;
g_log_cnt++;
g_log_ptr = (g_log_ptr + 1) % LOG_LINE_COUNT;
}
@@ -812,9 +817,10 @@ void ui_warn_impl(const char *format, ...) {
va_list args;
va_start(args, format);
- log_msg_to_buff(g_logs[g_log_ptr], LOG_LINE_SIZE, LOG_WARN, format, args);
+ log_msg_to_buff(g_logs[g_log_ptr], LOG_LINE_SIZE, LOG_WARN, false, format, args);
va_end(args);
+ g_log_levels[g_log_ptr] = LOG_WARN;
g_log_cnt++;
g_log_ptr = (g_log_ptr + 1) % LOG_LINE_COUNT;
}
@@ -831,7 +837,8 @@ void ui_print_log_line(unsigned lptr, int line) {
ui_clear_log_line(line);
if (strlen(g_logs[lptr])) {
- ui_field(line, PANE_WIDTH + 2, PAIR_NORMAL, A_NORMAL, g_logs[lptr]);
+ ui_field(line, PANE_WIDTH + 2, g_log_levels[lptr] == LOG_INFO ? PAIR_INFO : PAIR_WARN, A_NORMAL, "%.38s", g_logs[lptr]);
+ ui_field(line, PANE_WIDTH + 40, PAIR_NORMAL, A_NORMAL, g_logs[lptr] + 38);
}
}
@@ -942,7 +949,15 @@ void ev_vscroll(int ev) {
g_wrld_pos += g_vsiz_rng;
break;
case 'S':
+#if defined(MVEC_LOOP)
g_wrld_pos -= g_vsiz_rng;
+#else
+ if (g_wrld_pos < g_vsiz_rng) {
+ g_wrld_pos = 0;
+ } else {
+ g_wrld_pos -= g_vsiz_rng;
+ }
+#endif
break;
case 'w':
g_wrld_pos += g_vlin_rng;
@@ -1282,7 +1297,6 @@ void init(void) {
init_pair(PAIR_NORMAL, COLOR_WHITE, COLOR_BLACK);
init_pair(PAIR_HEADER, COLOR_BLUE, COLOR_BLACK);
- init_pair(PAIR_WARN, COLOR_RED, COLOR_BLACK);
init_pair(PAIR_LIVE_PROC, COLOR_BLUE, COLOR_BLACK);
init_pair(PAIR_SELECTED_PROC, COLOR_YELLOW, COLOR_BLACK);
init_pair(PAIR_FREE_CELL, COLOR_BLACK, COLOR_BLUE);
@@ -1292,6 +1306,8 @@ void init(void) {
init_pair(PAIR_SELECTED_MB2, COLOR_BLACK, COLOR_GREEN);
init_pair(PAIR_SELECTED_IP, COLOR_BLACK, COLOR_RED);
init_pair(PAIR_SELECTED_SP, COLOR_BLACK, COLOR_MAGENTA);
+ init_pair(PAIR_INFO, COLOR_GREEN, COLOR_BLACK);
+ init_pair(PAIR_WARN, COLOR_RED, COLOR_BLACK);
g_info = ui_info_impl;
g_warn = ui_warn_impl;
diff --git a/ui/curses/ui_vars.py b/ui/curses/ui_vars.py
deleted file mode 100644
index b2462fb..0000000
--- a/ui/curses/ui_vars.py
+++ /dev/null
@@ -1,7 +0,0 @@
-class UIVars:
- def __init__(self, _):
- self.flags = set()
- self.includes = {"curses.h", "locale.h", "time.h"}
- self.defines = {"-DNCURSES_WIDECHAR=1"}
- self.links = {"-lncurses"}
- self.pager = True
diff --git a/ui/curses/vars.py b/ui/curses/vars.py
new file mode 100644
index 0000000..d83befa
--- /dev/null
+++ b/ui/curses/vars.py
@@ -0,0 +1,3 @@
+flags = set()
+defines = {"-DNCURSES_WIDECHAR=1"}
+links = {"-lncurses"}