X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fedit_field.c;h=5e1aa6a27d7f2a8d7716a424cde1db1e6e25b497;hp=780bdab891a993cc72715cc7efca8406067af5ca;hb=d44d7f381ba0173521cb788ba3adb12e261e5c96;hpb=a8987e73ec254703634802b4f7ee30d3a485524d diff --git a/test/edit_field.c b/test/edit_field.c index 780bdab8..5e1aa6a2 100644 --- a/test/edit_field.c +++ b/test/edit_field.c @@ -1,5 +1,32 @@ +/**************************************************************************** + * Copyright (c) 2003-2005,2006 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. * + ****************************************************************************/ /* - * $Id: edit_field.c,v 1.7 2003/05/17 23:16:13 tom Exp $ + * $Id: edit_field.c,v 1.13 2006/12/09 16:50:11 tom Exp $ * * A wrapper for form_driver() which keeps track of the user's editing changes * for each field, and makes the result available as a null-terminated string @@ -14,9 +41,6 @@ #include -#define MY_QUIT EDIT_FIELD('q') -#define MY_INS_MODE EDIT_FIELD('t') - static struct { int code; int result; @@ -77,6 +101,9 @@ static struct { { CTRL('S'), REQ_BEG_FIELD, "go to beginning of field" }, + { + CTRL('T'), MY_EDT_MODE, "toggle O_EDIT mode, clear field status", + }, { CTRL('U'), REQ_UP_FIELD, "move upward to field" }, @@ -102,7 +129,7 @@ static struct { CTRL(']'), MY_INS_MODE, "toggle REQ_INS_MODE/REQ_OVL_MODE", }, { - KEY_F(1), EDIT_FIELD('h'), "show this screen", + KEY_F(1), MY_HELP, "show this screen", }, { KEY_BACKSPACE, REQ_DEL_PREV, "delete previous character" @@ -181,7 +208,7 @@ help_edit_field(void) keypad(help, TRUE); keypad(data, TRUE); - waddstr(data, "Defined form-traversal keys:\n"); + waddstr(data, "Defined form edit/traversal keys:\n"); for (n = 0; n < SIZEOF(commands); ++n) { const char *name; #ifdef NCURSES_VERSION @@ -197,6 +224,32 @@ help_edit_field(void) do { switch (ch) { + case KEY_HOME: + y1 = 0; + break; + case KEY_END: + y1 = y2; + break; + case KEY_PREVIOUS: + case KEY_PPAGE: + if (y1 > 0) { + y1 -= high / 2; + if (y1 < 0) + y1 = 0; + } else { + beep(); + } + break; + case KEY_NEXT: + case KEY_NPAGE: + if (y1 < y2) { + y1 += high / 2; + if (y1 >= y2) + y1 = y2; + } else { + beep(); + } + break; case CTRL('P'): case KEY_UP: if (y1 > 0) @@ -244,7 +297,6 @@ edit_field(FORM * form, int *result) int ch = wgetch(form_win(form)); int status; FIELD *before; - FIELD *after; unsigned n; char lengths[80]; int length; @@ -386,7 +438,7 @@ edit_field(FORM * form, int *result) set_field_buffer(before, 1, lengths); } - if ((after = current_field(form)) != before) + if (current_field(form) != before) set_field_back(before, A_UNDERLINE); return status; }