Text files redone to use lightbars
This commit is contained in:
136
src/main_menu.c
136
src/main_menu.c
@@ -86,36 +86,124 @@ void send_node_msg() {
|
||||
|
||||
void display_textfiles() {
|
||||
int i;
|
||||
char buffer[5];
|
||||
int redraw = 1;
|
||||
int start = 0;
|
||||
int selected = 0;
|
||||
char c;
|
||||
|
||||
if (conf.text_file_count > 0) {
|
||||
if (conf.text_file_count == 0) {
|
||||
s_printf("\e[2J\e[1;1H");
|
||||
s_printf(get_string(148));
|
||||
s_printf(get_string(185));
|
||||
s_getc();
|
||||
s_printf("\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
while(1) {
|
||||
while (1) {
|
||||
if (redraw) {
|
||||
s_printf("\e[2J\e[1;1H");
|
||||
s_printf(get_string(143));
|
||||
s_printf(get_string(144));
|
||||
|
||||
for (i=0;i<conf.text_file_count;i++) {
|
||||
s_printf(get_string(145), i, conf.text_files[i]->name);
|
||||
}
|
||||
s_printf(get_string(146));
|
||||
s_printf(get_string(147));
|
||||
s_readstring(buffer, 4);
|
||||
if (tolower(buffer[0]) != 'q') {
|
||||
i = atoi(buffer);
|
||||
if (i >= 0 && i < conf.text_file_count) {
|
||||
s_printf("\r\n");
|
||||
s_displayansi_p(conf.text_files[i]->path);
|
||||
s_printf(get_string(6));
|
||||
s_getc();
|
||||
s_printf("\r\n");
|
||||
for (i=start;i<start+22 && i < conf.text_file_count;i++) {
|
||||
if (i == selected) {
|
||||
s_printf(get_string(249), i - start + 2, i, conf.text_files[i]->name);
|
||||
} else {
|
||||
s_printf(get_string(250), i - start + 2, i, conf.text_files[i]->name);
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
s_printf("\e[%d;5H", selected - start + 2);
|
||||
redraw = 0;
|
||||
}
|
||||
c = s_getchar();
|
||||
if (tolower(c) == 'q') {
|
||||
break;
|
||||
} else if (c == 27) {
|
||||
c = s_getchar();
|
||||
if (c == 91) {
|
||||
c = s_getchar();
|
||||
if (c == 66) {
|
||||
// down
|
||||
if (selected + 1 >= start + 22) {
|
||||
start += 22;
|
||||
if (start >= conf.text_file_count) {
|
||||
start = conf.text_file_count - 22;
|
||||
}
|
||||
redraw = 1;
|
||||
}
|
||||
selected++;
|
||||
if (selected >= conf.text_file_count) {
|
||||
selected = conf.text_file_count - 1;
|
||||
} else {
|
||||
if (!redraw) {
|
||||
s_printf(get_string(250), selected - start + 1, selected - 1, conf.text_files[selected - 1]->name);
|
||||
s_printf(get_string(249), selected - start + 2, selected, conf.text_files[selected]->name);
|
||||
s_printf("\e[%d;5H", selected - start + 2);
|
||||
}
|
||||
}
|
||||
} else if (c == 65) {
|
||||
// up
|
||||
if (selected - 1 < start) {
|
||||
start -= 22;
|
||||
if (start < 0) {
|
||||
start = 0;
|
||||
}
|
||||
redraw = 1;
|
||||
}
|
||||
selected--;
|
||||
if (selected < 0) {
|
||||
selected = 0;
|
||||
} else {
|
||||
if (!redraw) {
|
||||
s_printf(get_string(249), selected - start + 2, selected, conf.text_files[selected]->name);
|
||||
s_printf(get_string(250), selected - start + 3, selected + 1, conf.text_files[selected + 1]->name);
|
||||
s_printf("\e[%d;5H", selected - start + 2);
|
||||
}
|
||||
}
|
||||
} else if (c == 75) {
|
||||
// END KEY
|
||||
selected = conf.text_file_count - 1;
|
||||
start = conf.text_file_count - 22;
|
||||
if (start < 0) {
|
||||
start = 0;
|
||||
}
|
||||
redraw = 1;
|
||||
} else if (c == 72) {
|
||||
// HOME KEY
|
||||
selected = 0;
|
||||
start = 0;
|
||||
redraw = 1;
|
||||
} else if (c == 86 || c == '5') {
|
||||
if (c == '5') {
|
||||
s_getchar();
|
||||
}
|
||||
// PAGE UP
|
||||
selected = selected - 22;
|
||||
if (selected < 0) {
|
||||
selected = 0;
|
||||
}
|
||||
start = selected;
|
||||
redraw = 1;
|
||||
} else if (c == 85 || c == '6') {
|
||||
if (c == '6') {
|
||||
s_getchar();
|
||||
}
|
||||
// PAGE DOWN
|
||||
selected = selected + 22;
|
||||
if (selected >= conf.text_file_count) {
|
||||
selected = conf.text_file_count -1;
|
||||
}
|
||||
start = selected;
|
||||
redraw = 1;
|
||||
}
|
||||
}
|
||||
} else if (c == 13) {
|
||||
s_printf("\e[2J\e[1;1H");
|
||||
s_displayansi_p(conf.text_files[selected]->path);
|
||||
s_printf(get_string(185));
|
||||
s_getc();
|
||||
s_printf("\r\n");
|
||||
redraw = 1;
|
||||
}
|
||||
} else {
|
||||
s_printf(get_string(148));
|
||||
s_printf(get_string(6));
|
||||
s_getc();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user