}
char **lines = splitlines (buffer, win->xsize);
free (buffer);
+ int len = 0;
+ while (lines[len] != NULL) {
+ len++;
+ }
+ char *basename = strrchr (name, *SEPARATOR);
+ basename = (basename) ? basename + 1 : name;
- char *title = strdupcat ("File: ", name, NULL);
set_color (black);
- _dobound (win->xsize, win->ysize, win->xoffset, win->yoffset);
- _displaytitle (title, win->xoffset, win->yoffset, win->xsize);
-
int skip = 0;
int stop = 0;
while (!stop) {
int i, j;
+
+ _dobound (win->xsize, win->ysize, win->xoffset, win->yoffset);
+
+ char percent[4] = {' ', ' ', ' ', 0};
+ int ratio = (skip + win->ysize > len) ? 100 : 100 * (skip + win->ysize) / len;
+ for (i = 2; (i >= 0) && (ratio > 0); i--, ratio /= 10) {
+ percent[i] = '0' + (ratio % 10);
+ }
+ char *title = strdupcat (" File: ", name, " ", percent, "% ", NULL);
+ mvaddstr (win->yoffset - 1, win->xoffset + (win->xsize - strlen (title)) / 2, title);
+ free (title);
+
+ if (skip > 0) {
+ mvaddch (win->yoffset - 1, win->xoffset - 1, ACS_UARROW);
+ mvaddch (win->yoffset - 1, win->xsize + win->xoffset, ACS_UARROW);
+ }
+ if (skip + win->ysize < len) {
+ mvaddch (win->ysize + win->yoffset, win->xoffset - 1, ACS_DARROW);
+ mvaddch (win->ysize + win->yoffset, win->xsize + win->xoffset, ACS_DARROW);
+ }
+
int eol = 0;
for (i = 0; i < win->ysize; i++) {
for (j = 0; j < win->xsize; j++) {
break;
case 'k':
case KEY_DOWN:
- if (lines[skip + 1] != NULL) {
+ if (skip + win->ysize < len) {
skip++;
}
break;
set_color (white);
freelines (lines);
- free (title);
return NULL;
}
break;
case ALT_V: /* view */
current = list[panel]->tab + windir[panel]->index;
- for (i = 0; i < MAXPANELS; i++) {
- elementwindow (winelem[i], "", NULL);
- }
- menuwindow (winmenu, "Help up(I) down(J) Quit", NULL);
- elementwindow (winelem[0], current->name, NULL);
- {
+ if (strcmp (current->name, "..") != 0) {
+ for (i = 0; i < MAXPANELS; i++) {
+ elementwindow (winelem[i], "", NULL);
+ }
+ menuwindow (winmenu, "Help up(I) down(J) Quit", NULL);
char *src = newfilename (dirname[panel], current->name);
+ char *status = strdupcat ("Viewing file '", src, "'", NULL);
+ elementwindow (winelem[0], status, NULL);
+ free (status);
char *msg = filewindow (src, winscreen);
if (msg) {
errorwindow (msg, winscreen);
free (msg);
}
free (src);
+ menuwindow (winmenu, menu, &index_menu);
}
- menuwindow (winmenu, menu, &index_menu);
break;
case ALT_X: /* chmod */
string = getwindow ("Change selected file(s) to mode", winscreen, 4, 4, "0644");