diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-05-21 22:29:28 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-05-22 00:05:31 +0200 |
| commit | d974dedbfd80e051fc26f9a42ea4f5059823bb86 (patch) | |
| tree | a04ac4d30c6acf700c47dca957762b584ed5d0ff | |
| parent | bff2afbf1dc4b302f600e56d46cb413f1c31be3c (diff) | |
| download | vis-d974dedbfd80e051fc26f9a42ea4f5059823bb86.tar.gz vis-d974dedbfd80e051fc26f9a42ea4f5059823bb86.tar.xz | |
vis: add function to change window statusbar content
| -rw-r--r-- | ui-curses.c | 13 | ||||
| -rw-r--r-- | ui.h | 1 | ||||
| -rw-r--r-- | vis.c | 4 | ||||
| -rw-r--r-- | vis.h | 2 |
4 files changed, 20 insertions, 0 deletions
diff --git a/ui-curses.c b/ui-curses.c index f2f215a..ce4ef03 100644 --- a/ui-curses.c +++ b/ui-curses.c @@ -669,6 +669,18 @@ static void ui_window_draw_status(UiWin *w) { mvwaddstr(win->winstatus, 0, win->width - (msg - buf) - 1, buf); } +static void ui_window_status(UiWin *w, const char *status) { + UiCursesWin *win = (UiCursesWin*)w; + if (!win->winstatus) + return; + UiCurses *uic = win->ui; + bool focused = uic->selwin == win; + wattrset(win->winstatus, focused ? A_REVERSE|A_BOLD : A_REVERSE); + mvwhline(win->winstatus, 0, 0, ' ', win->width); + if (status) + mvwprintw(win->winstatus, 0, 0, "%s", status); +} + static void ui_window_draw(UiWin *w) { UiCursesWin *win = (UiCursesWin*)w; if (!ui_window_draw_sidebar(win)) @@ -985,6 +997,7 @@ static UiWin *ui_window_new(Ui *ui, View *view, File *file, enum UiOption option win->uiwin = (UiWin) { .draw = ui_window_draw, .draw_status = ui_window_draw_status, + .status = ui_window_status, .options_set = ui_window_options_set, .options_get = ui_window_options_get, .reload = ui_window_reload, @@ -76,6 +76,7 @@ struct Ui { struct UiWin { void (*draw)(UiWin*); void (*draw_status)(UiWin*); + void (*status)(UiWin*, const char *txt); void (*reload)(UiWin*, File*); void (*options_set)(UiWin*, enum UiOption); enum UiOption (*options_get)(UiWin*); @@ -116,6 +116,10 @@ void vis_window_name(Win *win, const char *filename) { } } +void vis_window_status(Win *win, const char *status) { + win->ui->status(win->ui, status); +} + static void windows_invalidate(Vis *vis, size_t start, size_t end) { for (Win *win = vis->windows; win; win = win->next) { if (vis->win != win && vis->win->file == win->file) { @@ -93,6 +93,8 @@ void vis_window_close(Win*); bool vis_window_split(Win*); /* change file name associated with this window, affects syntax coloring */ void vis_window_name(Win*, const char *filename); +/* change status message of this window */ +void vis_window_status(Win*, const char *status); /* focus the next / previous window */ void vis_window_next(Vis*); void vis_window_prev(Vis*); |
