src/utils.c: Add a status_ask_simplechoice() function
We need a simpler version, based on the previously defined `status_ask_choice()` function, that asks to choose amongst a number of alternatives that can simply enumerated, without needing to bind keys on them. Signed-off-by: Baptiste Jonglez <baptiste--git@jonglez.org> Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
parent
f5dd276edb
commit
b2c92b2eb4
@ -897,6 +897,7 @@ void warnbox (const char *);
|
|||||||
void status_mesg (const char *, const char *);
|
void status_mesg (const char *, const char *);
|
||||||
void status_mesg_yesno (const char *);
|
void status_mesg_yesno (const char *);
|
||||||
int status_ask_choice (const char *, const char[], int);
|
int status_ask_choice (const char *, const char[], int);
|
||||||
|
int status_ask_simplechoice (const char *, const char *[], int);
|
||||||
void erase_window_part (WINDOW *, int, int, int, int);
|
void erase_window_part (WINDOW *, int, int, int, int);
|
||||||
WINDOW *popup (int, int, int, int, const char *, const char *, int);
|
WINDOW *popup (int, int, int, int, const char *, const char *, int);
|
||||||
void print_in_middle (WINDOW *, int, int, int, const char *);
|
void print_in_middle (WINDOW *, int, int, int, const char *);
|
||||||
|
33
src/utils.c
33
src/utils.c
@ -233,6 +233,39 @@ status_ask_choice(const char *message, const char choice[], int nb_choice)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prompts the user to make a choice between a number of alternatives.
|
||||||
|
*
|
||||||
|
* Returns the option chosen by the user (starting from 1), or -1 if
|
||||||
|
* the user doesn't want to answer.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
status_ask_simplechoice (const char *prefix, const char *choice[],
|
||||||
|
int nb_choice)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char tmp[BUFSIZ];
|
||||||
|
/* "(1) Choice1, (2) Choice2, (3) Choice3?" */
|
||||||
|
char choicestr[BUFSIZ];
|
||||||
|
/* Holds the characters to choose from ('1', '2', etc) */
|
||||||
|
char char_choice[nb_choice + 2];
|
||||||
|
|
||||||
|
/* No need to initialize first and last char. */
|
||||||
|
for (i = 1; i <= nb_choice; i++)
|
||||||
|
char_choice[i] = '0' + i;
|
||||||
|
|
||||||
|
strcpy (choicestr, prefix);
|
||||||
|
|
||||||
|
for (i = 0; i < nb_choice; i++)
|
||||||
|
{
|
||||||
|
sprintf (tmp, ((i + 1) == nb_choice) ? "(%d) %s?" : "(%d) %s, ",
|
||||||
|
(i + 1), _(choice[i]));
|
||||||
|
strcat (choicestr, tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (status_ask_choice (choicestr, char_choice, nb_choice));
|
||||||
|
}
|
||||||
|
|
||||||
/* Erase part of a window. */
|
/* Erase part of a window. */
|
||||||
void
|
void
|
||||||
erase_window_part (WINDOW *win, int first_col, int first_row, int last_col,
|
erase_window_part (WINDOW *win, int first_col, int first_row, int last_col,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user