/****************************************************************************
- * Copyright (c) 2003-2007,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2010,2011 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 *
* authorization. *
****************************************************************************/
/*
- * $Id: demo_forms.c,v 1.26 2008/08/23 23:22:55 tom Exp $
+ * $Id: demo_forms.c,v 1.38 2011/01/15 18:15:11 tom Exp $
*
* Demonstrate a variety of functions from the form library.
* Thomas Dickey - 2003/4/26
TYPE_ENUM -
TYPE_REGEXP -
dup_field -
-field_arg -
-field_back -
-field_count -
-field_fore -
field_init -
field_just -
-field_pad -
field_term -
-field_type -
form_init -
form_opts -
form_opts_off -
form_opts_on -
-form_page -
form_request_by_name -
form_term -
form_userptr -
new_page -
pos_form_cursor -
set_field_init -
-set_field_pad -
set_field_term -
set_fieldtype_arg -
set_fieldtype_choice -
if (f) {
set_field_buffer(f, 0, label);
- set_field_opts(f, (int) (field_opts(f) & ~O_ACTIVE));
+ set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE));
}
return (f);
}
FIELD *f = new_field(rows, cols, frow, fcol, o_value, 1);
if (f) {
+ FieldAttrs *ptr;
+
set_field_back(f, A_UNDERLINE);
/*
* If -j and -d options are combined, -j loses. It is documented in
* O_STATIC off makes the form library ignore justification.
*/
set_field_just(f, j_value);
- set_field_userptr(f, (void *) 0);
if (d_option) {
if (has_colors()) {
set_field_fore(f, COLOR_PAIR(2));
+ set_field_back(f, A_UNDERLINE | COLOR_PAIR(3));
} else {
set_field_fore(f, A_BOLD);
}
field_opts_off(f, O_STATIC);
set_max_field(f, m_value);
}
+
+ /*
+ * The userptr is used in edit_field.c's inactive_field().
+ */
+ ptr = (FieldAttrs *) field_userptr(f);
+ if (ptr == 0) {
+ ptr = typeCalloc(FieldAttrs, 1);
+ ptr->background = field_back(f);
+ }
+ set_field_userptr(f, (void *) ptr);
if (t_value)
set_field_buffer(f, 0, t_value);
}
static void
show_insert_mode(bool insert_mode)
{
- mvaddstr(5, 57, (insert_mode
+ MvAddStr(5, 57, (insert_mode
? "form_status: insert "
: "form_status: overlay"));
}
case MY_EDT_MODE:
if ((field = current_field(form)) != 0) {
set_current_field(form, another_field(form, field));
- if (field_opts(field) & O_EDIT) {
+ if ((unsigned) field_opts(field) & O_EDIT) {
field_opts_off(field, O_EDIT);
set_field_status(field, 0);
} else {
char *buffer;
int nbuf;
int field_rows, field_cols, field_max;
+ int currow, curcol;
if (has_colors()) {
wbkgd(win, COLOR_PAIR(1));
}
werase(win);
- wprintw(win, "Cursor: %d,%d", form->currow, form->curcol);
+ form_getyx(form, currow, curcol);
+ wprintw(win, "Cursor: %d,%d", currow, curcol);
if (data_ahead(form))
waddstr(win, " ahead");
if (data_behind(form))
waddstr(win, " behind");
waddch(win, '\n');
if ((field = current_field(form)) != 0) {
- wprintw(win, "Field %d:", field_index(field));
+ wprintw(win, "Page %d%s, Field %d/%d%s:",
+ form_page(form),
+ new_page(field) ? "*" : "",
+ field_index(field), field_count(form),
+ field_arg(field) ? "(arg)" : "");
if ((type = field_type(field)) != 0) {
if (type == TYPE_ALNUM)
waddstr(win, "ALNUM");
waddstr(win, "other");
}
- if (field_opts(field) & O_EDIT)
+ if ((unsigned) field_opts(field) & O_EDIT)
waddstr(win, " editable");
else
waddstr(win, " readonly");
wprintw(win, " size %dx%d (max %d)",
field_rows, field_cols, field_max);
}
+
+ waddch(win, ' ');
+ (void) wattrset(win, field_fore(field));
+ waddstr(win, "fore");
+ wattroff(win, field_fore(field));
+
+ waddch(win, '/');
+
+ (void) wattrset(win, field_back(field));
+ waddstr(win, "back");
+ wattroff(win, field_back(field));
+
+ wprintw(win, ", pad '%c'",
+ field_pad(field));
+
waddstr(win, "\n");
for (nbuf = 0; nbuf <= 2; ++nbuf) {
if ((buffer = field_buffer(field, nbuf)) != 0) {
wprintw(win, "buffer %d:", nbuf);
- wattrset(win, A_REVERSE);
+ (void) wattrset(win, A_REVERSE);
waddstr(win, buffer);
wattroff(win, A_REVERSE);
waddstr(win, "\n");
help_edit_field();
- mvaddstr(4, 57, "Forms Entry Test");
+ MvAddStr(4, 57, "Forms Entry Test");
show_insert_mode(TRUE);
refresh();
f[n++] = make_label(2, 34, "MI");
f[n++] = make_field(3, 34, 1, 1);
+ set_field_pad(f[n - 1], '?');
set_field_type(f[n - 1], TYPE_ALPHA, 1);
break;
case 2:
f[n++] = make_label(5, 0, "Comments");
f[n++] = make_field(6, 0, 4, 46);
+ set_field_buffer(f[n - 1], 0, "HELLO\nWORLD!");
+ set_field_buffer(f[n - 1], 1, "Hello\nWorld!");
}
- f[n++] = (FIELD *) 0;
+ f[n] = (FIELD *) 0;
if ((form = new_form(f)) != 0) {
free_form(form);
}
- for (c = 0; f[c] != 0; c++)
+ for (c = 0; f[c] != 0; c++) {
+ void *ptr = field_userptr(f[c]);
+ free(ptr);
free_field(f[c]);
+ }
noraw();
nl();
start_color();
init_pair(1, COLOR_WHITE, COLOR_BLUE);
init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_CYAN, COLOR_BLACK);
bkgd(COLOR_PAIR(1));
refresh();
}