From: Laurent Mazet Date: Tue, 7 Jan 2025 22:12:56 +0000 (+0100) Subject: wip filter X-Git-Tag: v1.0~61 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=dac8d209bacdf3d7c029482cebc0920f8c21cf01;p=fm.git wip filter --- diff --git a/display.c b/display.c index efee5a0..c96b573 100644 --- a/display.c +++ b/display.c @@ -296,16 +296,24 @@ void elementwindow (window_t *win, char *status, int *index) set_color (white); } -char *getwindow (int length, int xoffset, int yoffset) +char *getwindow (char *msg, window_t *win, int length) { char *name = (char *) calloc (1, length + 1); CHECKALLOC (name); memset (name, ' ', length); + int xoffset = win->xoffset + (win->xsize - strlen (msg) - 1 - length) / 2; + if (xoffset < 1) { + xoffset = 1; + } + int yoffset = win->yoffset + (win->ysize - 1) / 2; + set_color (black); - _dobound (length, 1, xoffset, yoffset); + _dobound (strlen (msg) + 1 + length, 1, xoffset, yoffset); + mvaddstr (yoffset, xoffset, msg); set_color (white); + xoffset += strlen (msg) + 1; int i = 0, j; int stop = 0; while (!stop) { diff --git a/display.h b/display.h index 12831c5..d0c49e3 100644 --- a/display.h +++ b/display.h @@ -14,7 +14,7 @@ void displaywindow (window_t *win, list_t *list, int page, int *index_x, int *in void elementwindow (window_t *win, char *status, int *index); -char *getwindow (int length, int xoffset, int yoffset); +char *getwindow (char *msg, window_t *win, int length); void msgwindow (char *msg, int xoffset, int yoffset, int length); diff --git a/fm.c b/fm.c index aab2046..e59ca5c 100644 --- a/fm.c +++ b/fm.c @@ -1,6 +1,6 @@ /* depend: */ /* cflags: */ -/* linker: debug.o display.o function.o -lcurses -lregex */ +/* linker: debug.o display.o function.o -lcurses */ /* doslnk: debug.o display.o function.o -lpdc~1 -lreg~1 */ /* winlnk: debug.o display.o function.o -lpdcurses -lregex */ @@ -186,6 +186,7 @@ int main (int argc, char *argv[]) int stop = 0; while (!stop) { elem_t *current = NULL; + char *filter = NULL; menuwindow (winmenu, menu, &index_menu); @@ -285,45 +286,47 @@ int main (int argc, char *argv[]) case 'o': index[pane]++; break; - case KEY_ESC: - case 'q': - if (askwindow (" Restart (Y/N) ", max (windir[pane]->xoffset + (windir[pane]->xsize - 15) / 2, 1), windir[pane]->yoffset + (windir[pane]->ysize - 1) / 2, "Yy", "Nn") == 1) { - stop = 1; - } - break; case 'u': index[pane]--; break; - case ALT_C: /* copy */ - break; - case ALT_D: /* delete */ - break; - case ALT_E: /* edit */ - break; - case ALT_F: /* filter */ - filterlist (list[pane], ".*\\.c"); - break; - case ALT_H: /* help */ - helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset); - while (getch () == ERR) { - usleep (200 * 1000); + case KEY_ESC: + switch (getch ()) { + case 'c': /* copy */ + break; + case 'd': /* delete */ + break; + case 'e': /* edit */ + break; + case 'f': /* filter */ + filter = getwindow ("Set filter", windir[pane], 32); + filterlist (list[pane], filter); + free (filter); + break; + case 'h': /* help */ + helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset); + while (getch () == ERR) { + usleep (200 * 1000); + } + break; + case 'm': /* move */ + break; + case 'n': /* new dir */ + break; + case 'q': /* quit */ + if (askwindow (" Restart (Y/N) ", max (windir[pane]->xoffset + (windir[pane]->xsize - 15) / 2, 1), windir[pane]->yoffset + (windir[pane]->ysize - 1) / 2, "Yy", "Nn") == 1) { + stop = 1; + } + break; + case 'r': /* rename */ + break; + case 's': /* select */ + current = list[pane]->tab + windir[pane]->index; + current->selected = (current->selected) ? 0 : 1; + break; + case 'v': /* view */ + break; } break; - case ALT_M: /* move */ - break; - case ALT_N: /* new dir */ - break; - case ALT_Q: /* quit */ - break; - case ALT_R: /* rename */ - break; - case ALT_S: /* select */ - case ' ': - current = list[pane]->tab + windir[pane]->index; - current->selected = (current->selected) ? 0 : 1; - break; - case ALT_V: /* view */ - break; } }