X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Fdemo_forms.c;h=62e8c644e23bc86d991720d4af9043f08fa7e9e5;hb=122d3739b3c11c83decc625d53f26fff6e825710;hp=b0a388e4b895661d2efba6f3fa41d998ca2cbd77;hpb=32345daa97e69f66b554f02faef53cfd02739bdc;p=ncurses.git diff --git a/test/demo_forms.c b/test/demo_forms.c index b0a388e4..62e8c644 100644 --- a/test/demo_forms.c +++ b/test/demo_forms.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2003-2017,2018 Free Software Foundation, Inc. * + * Copyright 2018-2022,2023 Thomas E. Dickey * + * Copyright 2003-2016,2017 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 * @@ -26,41 +27,11 @@ * authorization. * ****************************************************************************/ /* - * $Id: demo_forms.c,v 1.55 2018/07/14 23:26:02 tom Exp $ + * $Id: demo_forms.c,v 1.63 2023/11/11 00:29:53 tom Exp $ * * Demonstrate a variety of functions from the form library. * Thomas Dickey - 2003/4/26 */ -/* -dup_field - -field_init - -field_just - -field_term - -form_init - -form_opts - -form_opts_off - -form_opts_on - -form_request_by_name - -form_term - -form_userptr - -free_fieldtype - -link_field - -link_fieldtype - -move_field - -new_page - -pos_form_cursor - -set_field_init - -set_field_term - -set_fieldtype_arg - -set_fieldtype_choice - -set_form_fields - -set_form_init - -set_form_opts - -set_form_page - -set_form_term - -set_form_userptr - -set_max_field - -*/ #include @@ -183,7 +154,7 @@ make_label(const char *label, int frow, int fcol) if (f) { set_field_buffer(f, 0, label); - set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE)); + set_field_opts(f, (int) ((unsigned) field_opts(f) & (unsigned) ~O_ACTIVE)); } return (f); } @@ -271,7 +242,7 @@ show_insert_mode(bool insert_mode) #define O_SELECTABLE (O_ACTIVE | O_VISIBLE) static FIELD * -another_field(FORM *form, FIELD *field) +another_field(FORM *form, const FIELD *const field) { FIELD **f = form_fields(form); FIELD *result = 0; @@ -338,9 +309,6 @@ static void show_current_field(WINDOW *win, FORM *form) { FIELD *field; - FIELDTYPE *type; - char *buffer; - int nbuf; int field_rows, field_cols, field_max; int currow, curcol; @@ -355,7 +323,11 @@ show_current_field(WINDOW *win, FORM *form) if (data_behind(form)) waddstr(win, " behind"); waddch(win, '\n'); + if ((field = current_field(form)) != 0) { + FIELDTYPE *type; + int nbuf; + wprintw(win, "Page %d%s, Field %d/%d%s:", form_page(form), new_page(field) ? "*" : "", @@ -411,6 +383,7 @@ show_current_field(WINDOW *win, FORM *form) waddstr(win, "\n"); for (nbuf = 0; nbuf <= 2; ++nbuf) { + char *buffer; if ((buffer = field_buffer(field, nbuf)) != 0) { wprintw(win, "buffer %d:", nbuf); (void) wattrset(win, A_REVERSE); @@ -430,13 +403,11 @@ show_current_field(WINDOW *win, FORM *form) static void demo_forms(void) { - WINDOW *w; FORM *form; FIELD *f[100]; /* will memset to zero */ - int finished = 0, c; + int c; unsigned n = 0; int pg; - WINDOW *also; const char *fname; static const char *my_enum[] = {"first", "second", "third", 0}; @@ -544,6 +515,9 @@ demo_forms(void) f[n] = (FIELD *) 0; if ((form = new_form(f)) != 0) { + WINDOW *w; + WINDOW *also; + int finished = 0; display_form(form); @@ -582,23 +556,28 @@ demo_forms(void) } static void -usage(void) +usage(int ok) { static const char *tbl[] = { "Usage: demo_forms [options] [data file]" ,"" - ," -d make fields dynamic" - ," -j value justify (1=left, 2=center, 3=right)" - ," -m value set maximum size of dynamic fields" - ," -o value specify number of offscreen rows in new_field()" - ," -t value specify text to fill fields initially" + ,USAGE_COMMON + ,"Options:" + ," -d make fields dynamic" + ," -j NUM justify (1=left, 2=center, 3=right)" + ," -m NUM set maximum size of dynamic fields" + ," -o NUM specify number of offscreen rows in new_field()" + ," -t NUM specify text to fill fields initially" }; unsigned int j; for (j = 0; j < SIZEOF(tbl); ++j) fprintf(stderr, "%s\n", tbl[j]); - exit(EXIT_FAILURE); + ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE); } +/* *INDENT-OFF* */ +VERSION_COMMON() +/* *INDENT-ON* */ int main(int argc, char *argv[]) @@ -607,7 +586,7 @@ main(int argc, char *argv[]) setlocale(LC_ALL, ""); - while ((ch = getopt(argc, argv, "dj:m:o:t:")) != -1) { + while ((ch = getopt(argc, argv, OPTS_COMMON "dj:m:o:t:")) != -1) { switch (ch) { case 'd': d_option = TRUE; @@ -616,7 +595,7 @@ main(int argc, char *argv[]) j_value = atoi(optarg); if (j_value < NO_JUSTIFICATION || j_value > JUSTIFY_RIGHT) - usage(); + usage(FALSE); break; case 'm': m_value = atoi(optarg); @@ -627,9 +606,12 @@ main(int argc, char *argv[]) case 't': t_value = optarg; break; + case OPTS_VERSION: + show_version(argv); + ExitProgram(EXIT_SUCCESS); default: - usage(); - + usage(ch == OPTS_USAGE); + /* NOTREACHED */ } } while (optind < argc) {