return j;
}
-void menuwindow (window_t *win, char *menu, int *index)
+void menuwindow (window_t *win, char *menu, int *index, char *opt)
{
int i;
set_color (black);
if (_index < 0) {
_index = 0;
}
- if ((int)strlen (menu) - _index < win->xsize) {
- _index = strlen (menu) - win->xsize;
+ if ((int)strlen (menu) + ((opt) ? (int) strlen (opt) : 0) - _index < win->xsize) {
+ _index = strlen (menu) + ((opt) ? strlen (opt) : 0)- win->xsize;
}
if (_index < 0) {
_index = 0;
set_color (((menu[_index + i] >= 'A') && (menu[_index + i] <= 'Z')) ? iblue : black);
mvaddch (win->yoffset, win->xoffset + i, menu[_index + i]);
}
+ set_color (ired);
+ for (;(i < win->xsize) && (opt) && (*opt != 0); i++) {
+ mvaddch (win->yoffset, win->xoffset + i, *opt++);
+ }
set_color (white);
set_color (blue);
set_color (win->active ? (search ? ired : black) : white);
_dobound (win->xsize, win->ysize, win->xoffset, win->yoffset);
- if (search) {
- mvaddstr (win->yoffset + win->ysize, win->xoffset, "Search [");
- mvaddstr (win->yoffset + win->ysize, win->xoffset + 8, search);
- mvaddch (win->yoffset + win->ysize, win->xoffset + 8 + strlen (search), ']');
- }
if (page > 0) {
mvaddch (win->yoffset, win->xoffset - 1, ACS_UARROW);
mvaddch (win->yoffset, win->xsize + win->xoffset, ACS_UARROW);
int yoffset = 2;
int width = 0;
-char *help =
+char *help0 =
"alt Menu functions\n"
"ret Go dir/View file\n"
"tab Change panel\n"
"<o> Status right\n"
"<u> Status left\n"
;
+char *help1 =
+ "alt Menu functions\n"
+ "ret Go dir/View file\n"
+ ;
-char *menu = "Help View Copy Move Rename Delete Newdir Select Filter Xmod Quit";
+char *menu0 = "Help View Copy Move Rename Delete Newdir Select Filter Xmod Quit";
+char *menu1 = "Help Next Previous Quit Reset";
int usage (int ret)
{
elem_t *current = NULL;
char *string = NULL;
- menuwindow (winmenu, menu, &index_m);
+ char *opt = NULL;
+ if (search[panel]) {
+ opt = (char *) calloc (3 + strlen (search[panel]) + 1, 1);
+ CHECKALLOC (opt);
+ sprintf (opt, " [%s]", search[panel]);
+ }
+ menuwindow (winmenu, (mode) ? menu1 : menu0 , &index_m, opt);
+ free (opt);
/* display panels */
for (i = 0; i < MAXPANELS; i++) {
if (mode) {
int len = (search[panel]) ? strlen (search[panel]) : 0;
switch (ch) {
- case KEY_ESC:
case '\n':
case '\t':
case '\r':
search[panel][len - 1] = '\0';
}
break;
+#ifndef PDCURSES
+ case KEY_ESC:
+ switch (getch ()) {
+#endif /* PDCURSES */
+ case ALT_H:
+ helpwindow (help1, (width - strmaxlen (help0, '\n')) / 2, 3 * yoffset);
+ break;
+ case ALT_Q:
+ mode = 0;
+ free (search[panel]);
+ search[panel] = NULL;
+ break;
+ case ALT_R:
+ *search[panel] = '\0';
+ break;
+#ifndef PDCURSES
+ }
+ break;
+#endif /* PDCURSES */
default:
search[panel] = (char *) realloc (search[panel], len + 2);
CHECKALLOC (search[panel]);
for (i = 0; i < MAXPANELS; i++) {
elementwindow (winelem[i], "", NULL);
}
- menuwindow (winmenu, "Help up(I) down(J) Mode Quit", NULL);
+ menuwindow (winmenu, "Help up(I) down(J) Mode Quit", NULL, NULL);
char *src = newfilename (dirname[panel], current->name);
char *status = strdupcat ("Viewing file '", src, "'", NULL);
elementwindow (winelem[0], status, NULL);
free (msg);
}
free (src);
- menuwindow (winmenu, menu, &index_m);
+ menuwindow (winmenu, menu0, &index_m, NULL);
}
break;
case '\t':
break;
case 'H':
case 'h':
- helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset);
+ helpwindow (help0, (width - strmaxlen (help0, '\n')) / 2, 3 * yoffset);
break;
case KEY_UP:
case 'i':
}
break;
case ALT_H: /* help */
- helpwindow (help, (width - strmaxlen (help, '\n')) / 2, 3 * yoffset);
+ helpwindow (help0, (width - strmaxlen (help0, '\n')) / 2, 3 * yoffset);
break;
case ALT_M: /* move */
if (askwindow (" Move selected file(s) (Y/N) ", winscreen, "Yy", "Nn") == 1) {
for (i = 0; i < MAXPANELS; i++) {
elementwindow (winelem[i], "", NULL);
}
- menuwindow (winmenu, "Help up(I) down(J) Mode Quit", NULL);
+ menuwindow (winmenu, "Help up(I) down(J) Mode Quit", NULL, NULL);
char *src = newfilename (dirname[panel], current->name);
char *status = strdupcat ("Viewing file '", src, "'", NULL);
elementwindow (winelem[0], status, NULL);
free (msg);
}
free (src);
- menuwindow (winmenu, menu, &index_m);
+ menuwindow (winmenu, menu0, &index_m, NULL);
}
break;
case ALT_X: /* chmod */