blob: 3e928af8cc5692aebdff82265b574e5968a04cec [file] [log] [blame]
/****************************************************************************
* Copyright (c) 2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* "Software"), to deal in the Software without restriction, including *
* without limitation the rights to use, copy, modify, merge, publish, *
* distribute, distribute with modifications, sublicense, and/or sell *
* copies of the Software, and to permit persons to whom the Software is *
* furnished to do so, subject to the following conditions: *
* *
* The above copyright notice and this permission notice shall be included *
* in all copies or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
* *
* Except as contained in this notice, the name(s) of the above copyright *
* holders shall not be used in advertising or otherwise to promote the *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************/
/****************************************************************************
* Author: Gaute Hope, 2013 *
****************************************************************************/
/*
* $Id: form_driver_w.c,v 1.13 2014/08/02 17:24:55 tom Exp $
*
* Test form_driver_w (int, int, wchar_t), a wide char aware
* replacement of form_driver.
*/
#include <locale.h>
#include <test.priv.h>
#if USE_WIDEC_SUPPORT && USE_LIBFORM && (defined(NCURSES_VERSION_PATCH) && NCURSES_VERSION_PATCH >= 20131207)
#include <form.h>
int
main(void)
{
FIELD *field[3];
FORM *my_form;
bool done = FALSE;
setlocale(LC_ALL, "");
/* Initialize curses */
initscr();
cbreak();
noecho();
keypad(stdscr, TRUE);
/* Initialize the fields */
field[0] = new_field(1, 10, 4, 18, 0, 0);
field[1] = new_field(1, 10, 6, 18, 0, 0);
field[2] = NULL;
/* Set field options */
set_field_back(field[0], A_UNDERLINE); /* Print a line for the option */
field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
/* Field is filled up */
set_field_back(field[1], A_UNDERLINE);
field_opts_off(field[1], O_AUTOSKIP);
/* Create the form and post it */
my_form = new_form(field);
post_form(my_form);
refresh();
mvprintw(4, 10, "Value 1:");
mvprintw(6, 10, "Value 2:");
refresh();
/* Loop through to get user requests */
while (!done) {
wint_t ch;
int ret = get_wch(&ch);
mvprintw(8, 10, "Got %d (%#x), type: %s", (int) ch, (int) ch,
(ret == KEY_CODE_YES)
? "KEY_CODE_YES"
: ((ret == OK)
? "OK"
: ((ret == ERR)
? "ERR"
: "?")));
clrtoeol();
switch (ret) {
case KEY_CODE_YES:
switch (ch) {
case KEY_DOWN:
/* Go to next field */
form_driver_w(my_form, KEY_CODE_YES, REQ_NEXT_FIELD);
/* Go to the end of the present buffer */
/* Leaves nicely at the last character */
form_driver_w(my_form, KEY_CODE_YES, REQ_END_LINE);
break;
case KEY_UP:
/* Go to previous field */
form_driver_w(my_form, KEY_CODE_YES, REQ_PREV_FIELD);
form_driver_w(my_form, KEY_CODE_YES, REQ_END_LINE);
break;
default:
break;
}
break;
case OK:
switch (ch) {
case CTRL('D'):
case QUIT:
case ESCAPE:
done = TRUE;
break;
default:
form_driver_w(my_form, OK, (wchar_t) ch);
break;
}
break;
}
}
/* Un post form and free the memory */
unpost_form(my_form);
free_form(my_form);
free_field(field[0]);
free_field(field[1]);
endwin();
ExitProgram(EXIT_SUCCESS);
}
#else
int
main(void)
{
printf("This program requires the wide-ncurses and forms library\n");
ExitProgram(EXIT_FAILURE);
}
#endif /* USE_WIDEC_SUPPORT */