Add markers as lines to the log
parent
eac0f83efa
commit
4771a54bf9
28
ui.c
28
ui.c
|
@ -100,7 +100,7 @@ static struct {
|
||||||
WINDOW *log;
|
WINDOW *log;
|
||||||
WINDOW *input;
|
WINDOW *input;
|
||||||
int scroll;
|
int scroll;
|
||||||
size_t cursor;
|
bool mark;
|
||||||
} ui;
|
} ui;
|
||||||
|
|
||||||
void uiInit(void) {
|
void uiInit(void) {
|
||||||
|
@ -267,7 +267,6 @@ static void addIRC(WINDOW *win, const wchar_t *str) {
|
||||||
break; case IRC_RESET: attr = A_NORMAL; pair = -1;
|
break; case IRC_RESET: attr = A_NORMAL; pair = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wattr_set(win, A_NORMAL, 0, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void uiTopic(const wchar_t *topic) {
|
void uiTopic(const wchar_t *topic) {
|
||||||
|
@ -285,6 +284,17 @@ void uiTopicStr(const char *topic) {
|
||||||
|
|
||||||
void uiLog(const wchar_t *line) {
|
void uiLog(const wchar_t *line) {
|
||||||
waddch(ui.log, '\n');
|
waddch(ui.log, '\n');
|
||||||
|
|
||||||
|
if (ui.mark) {
|
||||||
|
ui.mark = false;
|
||||||
|
wattr_set(ui.log, attr8(IRC_COLORS[14]), 1 + pair8(IRC_COLORS[14]), NULL);
|
||||||
|
whline(ui.log, ACS_HLINE, COLS);
|
||||||
|
int y, _;
|
||||||
|
getyx(ui.log, y, _);
|
||||||
|
wmove(ui.log, y, COLS);
|
||||||
|
waddch(ui.log, '\n');
|
||||||
|
}
|
||||||
|
|
||||||
addIRC(ui.log, line);
|
addIRC(ui.log, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,22 +309,15 @@ void uiFmt(const wchar_t *format, ...) {
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void logMark(void) {
|
|
||||||
int y, _;
|
|
||||||
getyx(ui.log, y, _);
|
|
||||||
mvwvline(ui.log, 0, lastCol(), ' ', LOG_LINES);
|
|
||||||
wattr_set(ui.log, A_NORMAL, 1 + COLOR_RED, NULL);
|
|
||||||
mvwaddwstr(ui.log, y, lastCol(), L"◄");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void logUp(void) {
|
static void logUp(void) {
|
||||||
if (ui.scroll == logHeight()) return;
|
if (ui.scroll == logHeight()) return;
|
||||||
if (ui.scroll == LOG_LINES) logMark();
|
if (ui.scroll == LOG_LINES) ui.mark = true;
|
||||||
ui.scroll = MAX(ui.scroll - logHeight() / 2, logHeight());
|
ui.scroll = MAX(ui.scroll - logHeight() / 2, logHeight());
|
||||||
}
|
}
|
||||||
static void logDown(void) {
|
static void logDown(void) {
|
||||||
if (ui.scroll == LOG_LINES) return;
|
if (ui.scroll == LOG_LINES) return;
|
||||||
ui.scroll = MIN(ui.scroll + logHeight() / 2, LOG_LINES);
|
ui.scroll = MIN(ui.scroll + logHeight() / 2, LOG_LINES);
|
||||||
|
if (ui.scroll == LOG_LINES) ui.mark = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool keyChar(wint_t ch) {
|
static bool keyChar(wint_t ch) {
|
||||||
|
@ -332,7 +335,8 @@ static bool keyChar(wint_t ch) {
|
||||||
csi = true;
|
csi = true;
|
||||||
return false;
|
return false;
|
||||||
} else if (csi) {
|
} else if (csi) {
|
||||||
if (ch == L'O') logMark();
|
if (ch == L'O') ui.mark = true;
|
||||||
|
if (ch == L'I') ui.mark = false;
|
||||||
} else if (iswcntrl(ch)) {
|
} else if (iswcntrl(ch)) {
|
||||||
update = edit(esc, true, UNCTRL(ch));
|
update = edit(esc, true, UNCTRL(ch));
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue