aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fm.c15
-rw-r--r--fm.h2
-rw-r--r--main.c10
3 files changed, 26 insertions, 1 deletions
diff --git a/fm.c b/fm.c
index 2f9c66c..28a7ff3 100644
--- a/fm.c
+++ b/fm.c
@@ -147,6 +147,7 @@ fm_init(terminal *t)
info->next = xmalloc(sizeof(file_list));
fm_file_list_init(info->cur, 30);
fm_file_list_init(info->next, 30);
+ create_status_bar_win(t);
return info;
}
@@ -405,3 +406,17 @@ open_with_editor(char **argv)
return 0;
}
+
+void
+create_status_bar_win(terminal *t)
+{
+ wm_create_new_w(t, "status_bar", 1, t->maxx, t->maxy - 1, 0);
+}
+
+void
+draw_status_bar(window *bar_win, const char *cwd)
+{
+ werase(bar_win->win);
+
+ mvwprintw(bar_win->win, bar_win->height - 1, 0, "%s", cwd);
+}
diff --git a/fm.h b/fm.h
index e515d5a..b116a2d 100644
--- a/fm.h
+++ b/fm.h
@@ -61,4 +61,6 @@ bool fm_preview_file(window *w, const char *path);
int open_with_editor(char **argv);
void magic_init(void);
void magic_cleanup(void);
+void create_status_bar_win(terminal *t);
+void draw_status_bar(window *bar_win, const char *cwd);
#endif /* SF_FM_H */
diff --git a/main.c b/main.c
index c475b29..f1d81db 100644
--- a/main.c
+++ b/main.c
@@ -37,7 +37,8 @@ static void path_normalize(char *path)
return;
}
-int main(int argc, char **argv)
+int
+main(int argc, char **argv)
{
if (argc > 1 &&
(strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-v") == 0))
@@ -49,6 +50,10 @@ int main(int argc, char **argv)
terminal *term = ncurses_init();
fm_info *info = fm_init(term);
+ int stat_bar_win_index = wm_fd_w_by_name(term, "status_bar");
+ if (stat_bar_win_index == -1) {
+ log_write(LOG_WARN, "Cannot find window: status_bar");
+ }
need_redraw = true;
if (argc == 2) {
snprintf(info->cwd, sizeof(info->cwd), "%s", argv[1]);
@@ -97,8 +102,11 @@ int main(int argc, char **argv)
}
}
+ draw_status_bar(term->windows[stat_bar_win_index], info->cwd);
+
wrefresh(info->windows[FM_PANE_RIGHT]->win);
wrefresh(info->windows[FM_PANE_LEFT]->win);
+ wrefresh(term->windows[stat_bar_win_index]->win);
ch = getch();
handling_keys(ch, info);