diff options
| author | verdant <im@verdant.ee> | 2026-07-21 20:43:29 +0800 |
|---|---|---|
| committer | verdant <im@verdant.ee> | 2026-07-21 20:43:29 +0800 |
| commit | eaff9b74f5a6818809ca95c522c50fa5e18ee3f4 (patch) | |
| tree | 42261412bd22b1d7344de4bc83ed0f8465739d87 | |
| parent | ac286172064a751e3fe19c5c43bcc4b56481e745 (diff) | |
| download | sf-eaff9b74f5a6818809ca95c522c50fa5e18ee3f4.tar.gz sf-eaff9b74f5a6818809ca95c522c50fa5e18ee3f4.zip | |
Implement initialize and creating windows for file manager
| -rw-r--r-- | fm.c | 51 | ||||
| -rw-r--r-- | fm.h | 19 |
2 files changed, 70 insertions, 0 deletions
@@ -0,0 +1,51 @@ +#include "fm.h" + +#include "display.h" +#include "err.h" +#include "wm.h" + +static fm_info* fm_w_init(terminal* t) { + fm_info* f = xmalloc(sizeof(fm_info)); + f->fm_l = xmalloc(sizeof(window)); + f->fm_r = xmalloc(sizeof(window)); + int i = wm_fd_w_by_name(t, "stat"); + if (i == -1) { + die("Cannot find window \"stat\""); + } + + int fm_w = t->maxx / 2; + int fm_h = t->maxy - t->windows[i]->height; + int fm_starty = t->windows[i]->height - STAT_BAR_HEIGHT; + + int fm_l_startx = 0; + int fm_r_startx = t->maxx / 2; + + window* fm_l = + wm_create_new_w(t, "fm_l", fm_h, fm_w, fm_starty, fm_l_startx); + window* fm_r = + wm_create_new_w(t, "fm_r", fm_h, fm_w, fm_starty, fm_r_startx); + if (!fm_l || !fm_r) { + die("Cannot create file manager window"); + } + f->fm_l->height = fm_h; + log_write(LOG_INFO, "fm_h = %d", fm_h); + log_write(LOG_INFO, "f->fm_l->height = %d", f->fm_l->height); + f->fm_l->width = fm_w; + f->fm_l->start_y = fm_starty; + f->fm_l->start_x = fm_l_startx; + f->fm_l->win = fm_l->win; + + f->fm_r->height = fm_h; + f->fm_r->width = fm_w; + f->fm_r->start_y = fm_starty; + f->fm_r->start_x = fm_r_startx; + f->fm_r->win = fm_r->win; + wborder(f->fm_l->win, ' ', ACS_VLINE, ' ', ' ', ' ', ' ', ' ', ' '); + + return f; +} +void fm_getdir(fm_info* f); +fm_info* fm_init(terminal* t) { + fm_info* f = fm_w_init(t); + return f; +} @@ -0,0 +1,19 @@ +#ifndef SF_FM_H +#define SF_FM_H + +#include <ncurses.h> + +#include "wm.h" + +typedef struct { + window *fm_l, *fm_r; + char** cur_contents; + char** next_dir_contents; + int content_idx; +} fm_info; + +static fm_info* fm_w_init(terminal* t); +void fm_getdir(fm_info* f); +fm_info* fm_init(terminal* t); + +#endif /* SF_FM_H */ |
