/* depend: */
/* cflags: */
-/* linker: debug.o display.o function.o -lcurses */
-/* doslnk: debug.o display.o function.o -lpdc~1 */
-/* winlnk: debug.o display.o function.o -lpdcurses */
+/* linker: debug.o display.o function.o -lcurses -lregex */
+/* doslnk: debug.o display.o function.o -lpdc~1 -lreg~1 */
+/* winlnk: debug.o display.o function.o -lpdcurses -lregex */
#include <curses.h>
#include <stdio.h>
int width = 0;
char *help =
+ "alt Menu functions\n"
"ret Enter directory\n"
"tab Change pane\n"
"<I> Page up\n"
"<K> Page down\n"
- "<h> Show help\n"
"<i> Move up\n"
"<j> Move left\n"
"<k> Move down\n"
"<u> Status left\n"
;
-char *menu = "Help View Edit Copy Move Rename Newdir Select Filter chmOd Quit";
+char *menu = "Help View Edit Copy Move Rename Delete Newdir Select Filter Xmod Quit";
int usage (int ret)
{
/* event loop */
int stop = 0;
while (!stop) {
+ elem_t *current = NULL;
menuwindow (winmenu, menu, &index_menu);
displaywindow (windir[i], list[i], page[i], &index_x[i], &index_y[i]);
/* display info */
- elem_t *current = list[i]->tab + windir[i]->index;
+ current = list[i]->tab + windir[i]->index;
if (current->uid == NULL) {
getinfo (dirname[i], current);
}
page[pane]++;
}
break;
- case 'h':
- helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset);
- while (getch () == ERR) {
- usleep (200 * 1000);
- }
- break;
case KEY_UP:
case 'i':
if (index_y[pane]> 0) {
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);
+ }
+ 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;
}
}
#include <dirent.h>
+#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
free (win);
}
+
+int filterlist (list_t *list, char *regex)
+{
+ regex_t reegex;
+ int rc = regcomp (&reegex, regex, 0);
+
+ int i;
+ for (i = 0; (i < list->nb) && (rc == 0); i++) {
+ elem_t *elem = list->tab + i;
+ switch (regexec (&reegex, elem->name, 0, NULL, 0)) {
+ case 0:
+ elem->selected = 1;
+ break;
+ case REG_NOMATCH:
+ elem->selected = 0;
+ break;
+ default:
+ rc = 1;
+ }
+ }
+ return rc;
+}
+
/* vim: set ts=4 sw=4 et: */