item_in_popup() improved to replace the scroller() function by a pad.
scroller() function suppressed
This commit is contained in:
parent
1c9570fb8d
commit
9464e3fb53
120
src/utils.c
120
src/utils.c
@ -1,4 +1,4 @@
|
|||||||
/* $calcurse: utils.c,v 1.16 2006/12/08 08:36:58 culot Exp $ */
|
/* $calcurse: utils.c,v 1.17 2006/12/13 09:34:09 culot Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse - text-based organizer
|
* Calcurse - text-based organizer
|
||||||
@ -350,110 +350,6 @@ void border_nocolor(WINDOW * window)
|
|||||||
wnoutrefresh(window);
|
wnoutrefresh(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* prints and scroll text in a window */
|
|
||||||
void scroller(WINDOW *win, char *mesg, int x, int y, int nb_row, int nb_col)
|
|
||||||
{
|
|
||||||
int x_offset = 3;
|
|
||||||
int y_offset = 3;
|
|
||||||
int text_len = nb_col - 2 * x_offset;
|
|
||||||
int text_max_row = nb_row - 3;
|
|
||||||
int nlin, i, j, k;
|
|
||||||
int last_blank_i, last_blank_j;
|
|
||||||
char buf[] = " ";
|
|
||||||
char *next_mesg = _("-- Press 'N' for next page --");
|
|
||||||
char *prev_mesg = _("-- Press 'P' for previous page --");
|
|
||||||
int ch;
|
|
||||||
int which_page; //first page : 0, second page : 1
|
|
||||||
|
|
||||||
i = 0; //position in the message
|
|
||||||
j = 0; //x position on the current line
|
|
||||||
nlin = 1; //line number
|
|
||||||
last_blank_j = 0;
|
|
||||||
last_blank_i = 0;
|
|
||||||
which_page = 0;
|
|
||||||
|
|
||||||
while (i <= strlen(mesg)) {
|
|
||||||
if ((i == strlen(mesg)) & (which_page == 1)) {
|
|
||||||
// we have finished writing text and we are on second page
|
|
||||||
custom_apply_attr(win, ATTR_HIGHEST);
|
|
||||||
mvwprintw(win, nb_row - 2,
|
|
||||||
nb_col - (strlen(prev_mesg) + 2), "%s",
|
|
||||||
prev_mesg);
|
|
||||||
custom_remove_attr(win, ATTR_HIGHEST);
|
|
||||||
wmove(swin, 0, 0);
|
|
||||||
wnoutrefresh(win);
|
|
||||||
wnoutrefresh(swin);
|
|
||||||
doupdate();
|
|
||||||
ch = wgetch(win);
|
|
||||||
if ( (ch == 'P') | (ch == 'p') ) {
|
|
||||||
erase_window_part(win, y + 1, x + 3, nb_col - 2, nb_row - 2);
|
|
||||||
nlin = 1;
|
|
||||||
j = 0;
|
|
||||||
i = 0;
|
|
||||||
which_page = 0;
|
|
||||||
} else { //erase last line and exit next-prev page mode
|
|
||||||
for (k = 1; k < nb_col - 2; k++)
|
|
||||||
mvwprintw(win, nb_row - 2, k, " ");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (nlin == text_max_row - 2) { // we reach the last line
|
|
||||||
custom_apply_attr(win, ATTR_HIGHEST);
|
|
||||||
mvwprintw(win, nb_row - 2,
|
|
||||||
nb_col - (strlen(next_mesg) + 2), "%s",
|
|
||||||
next_mesg);
|
|
||||||
custom_remove_attr(win, ATTR_HIGHEST);
|
|
||||||
wmove(swin, 0, 0);
|
|
||||||
wnoutrefresh(win);
|
|
||||||
wnoutrefresh(swin);
|
|
||||||
doupdate();
|
|
||||||
ch = wgetch(win);
|
|
||||||
if ( (ch == 'N') | (ch == 'n') ) {
|
|
||||||
erase_window_part(win, y + 1, x + 3, nb_col - 2, nb_row - 2);
|
|
||||||
nlin = 1;
|
|
||||||
j = 0;
|
|
||||||
which_page = 1;
|
|
||||||
} else {
|
|
||||||
for (k = 1; k < nb_col - 2; k++)
|
|
||||||
mvwprintw(win, nb_row - 2, k, " ");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//write text
|
|
||||||
strncpy(buf, mesg + i, 1);
|
|
||||||
i++;
|
|
||||||
j++;
|
|
||||||
if ((strncmp(buf, "§", 1) == 0)) { //§ is the character for a new line
|
|
||||||
buf[0] = '\0';
|
|
||||||
mvwprintw(win, x + x_offset + nlin, y + y_offset + j,
|
|
||||||
"%s", buf);
|
|
||||||
nlin++;
|
|
||||||
j = 0;
|
|
||||||
} else {
|
|
||||||
if (j == text_len - 1) { // if we reach the terminal border
|
|
||||||
for (k = last_blank_j; k <= text_len - 1;
|
|
||||||
k++)
|
|
||||||
mvwprintw(win, x + x_offset + nlin,
|
|
||||||
y + y_offset + k, " ");
|
|
||||||
nlin++;
|
|
||||||
i = last_blank_i;
|
|
||||||
j = 0;
|
|
||||||
} else {
|
|
||||||
if ((strncmp(buf, " ", 1) == 0)) //space between words
|
|
||||||
{
|
|
||||||
last_blank_j = j; //save position
|
|
||||||
last_blank_i = i;
|
|
||||||
}
|
|
||||||
mvwprintw(win, x + x_offset + nlin,
|
|
||||||
y + y_offset + j, "%s", buf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
wmove(swin, 0, 0);
|
|
||||||
wnoutrefresh(win);
|
|
||||||
wnoutrefresh(swin);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Draws the status bar.
|
* Draws the status bar.
|
||||||
* To add a keybinding, insert a new binding_t item, add it in the *binding
|
* To add a keybinding, insert a new binding_t item, add it in the *binding
|
||||||
@ -720,17 +616,23 @@ void draw_scrollbar(WINDOW *win, int y, int x, int length,
|
|||||||
void item_in_popup(char *saved_a_start, char *saved_a_end, char *msg,
|
void item_in_popup(char *saved_a_start, char *saved_a_end, char *msg,
|
||||||
char *pop_title)
|
char *pop_title)
|
||||||
{
|
{
|
||||||
WINDOW *popup_win;
|
WINDOW *popup_win, *pad;
|
||||||
|
const int margin_left = 4, margin_top = 4;
|
||||||
|
const int winl = row - 5, winw = col - margin_left;
|
||||||
|
const int padl = winl - 2, padw = winw - margin_left;
|
||||||
|
|
||||||
popup_win = popup(row - 4, col - 2, 1, 1, pop_title);
|
pad = newpad(padl, padw);
|
||||||
|
popup_win = popup(winl, winw, 1, 2, pop_title);
|
||||||
if (strncmp(pop_title, _("Appointment"), 11) == 0) {
|
if (strncmp(pop_title, _("Appointment"), 11) == 0) {
|
||||||
mvwprintw(popup_win, 4, 4, " - %s -> %s",
|
mvwprintw(popup_win, margin_top, margin_left, "- %s -> %s",
|
||||||
saved_a_start, saved_a_end);
|
saved_a_start, saved_a_end);
|
||||||
}
|
}
|
||||||
scroller(popup_win, msg, 1, 1, row - 4, col - 2);
|
mvwprintw(pad, 0, margin_left, "%s", msg);
|
||||||
wmove(swin, 0, 0);
|
wmove(swin, 0, 0);
|
||||||
|
pnoutrefresh(pad, 0, 0, margin_top + 2, margin_left, padl, winw);
|
||||||
doupdate();
|
doupdate();
|
||||||
wgetch(popup_win);
|
wgetch(popup_win);
|
||||||
|
delwin(pad);
|
||||||
delwin(popup_win);
|
delwin(popup_win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user