xref: /freebsd/contrib/bsddialog/utility/util.h (revision 61ba55bcf70f2340f9c943c9571113b3fd8eda69)
1 /*-
2  * SPDX-License-Identifier: BSD-2-Clause
3  *
4  * Copyright (c) 2021-2023 Alfonso Sabato Siciliano
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25  * SUCH DAMAGE.
26  */
27 
28 #ifndef _BSDDIALOG_UTIL_H_
29 #define _BSDDIALOG_UTIL_H_
30 
31 /*
32  * Exit codes and errors, bsddialog.c
33  */
34 #define BSDDIALOG_ITEM_HELP 12
35 
36 void set_exit_code(int lib_retval, int exitcode);
37 void exit_error(bool usage, const char *fmt, ...);
38 void error_args(const char *dialog, int argc, char **argv);
39 
40 /*
41  * Command Line, util_cli.c
42  */
43 struct options {
44 	/* Menus options */
45 	bool item_always_quote;
46 	char *item_default;
47 	bool item_depth;
48 	char *item_output_sep;
49 	bool item_output_sepnl;
50 	bool item_prefix;
51 	bool item_singlequote;
52 	/* Menus and Forms options */
53 	bool help_print_item_name;
54 	bool help_print_items;
55 	bool item_bottomdesc;
56 	/* Forms options */
57 	int unsigned max_input_form;
58 	/* Date and Time options */
59 	char *date_fmt;
60 	char *time_fmt;
61 	/* General options */
62 	int getH;
63 	int getW;
64 	bool ignore;
65 	int output_fd;
66 	/* Text option */
67 	bool cr_wrap;
68 	bool tab_escape;
69 	bool text_unchanged;
70 	/* Theme and Screen options*/
71 	char *backtitle;
72 	bool bikeshed;
73 	enum bsddialog_default_theme theme;
74 	bool clearscreen;
75 	char *loadthemefile;
76 	char *savethemefile;
77 	const char *screen_mode;
78 	/* Dialog */
79 	bool mandatory_dialog;
80 	const char *name;
81 	int (*dialogbuilder)(struct bsddialog_conf *conf, char* text, int rows,
82 	    int cols, int argc, char **argv, struct options *opt);
83 };
84 
85 void usage(void);
86 int
87 parseargs(int argc, char **argv, struct bsddialog_conf *conf,
88     struct options *opt);
89 
90 /*
91  * Dialogs builders, util_builders.c
92  */
93 #define BUILDER_ARGS struct bsddialog_conf *conf, char* text, int rows,        \
94 	int cols, int argc, char **argv, struct options *opt
95 int calendar_builder(BUILDER_ARGS);
96 int checklist_builder(BUILDER_ARGS);
97 int datebox_builder(BUILDER_ARGS);
98 int form_builder(BUILDER_ARGS);
99 int gauge_builder(BUILDER_ARGS);
100 int infobox_builder(BUILDER_ARGS);
101 int inputbox_builder(BUILDER_ARGS);
102 int menu_builder(BUILDER_ARGS);
103 int mixedform_builder(BUILDER_ARGS);
104 int mixedgauge_builder(BUILDER_ARGS);
105 int msgbox_builder(BUILDER_ARGS);
106 int passwordbox_builder(BUILDER_ARGS);
107 int passwordform_builder(BUILDER_ARGS);
108 int pause_builder(BUILDER_ARGS);
109 int radiolist_builder(BUILDER_ARGS);
110 int rangebox_builder(BUILDER_ARGS);
111 int textbox_builder(BUILDER_ARGS);
112 int timebox_builder(BUILDER_ARGS);
113 int treeview_builder(BUILDER_ARGS);
114 int yesno_builder(BUILDER_ARGS);
115 
116 /*
117  * Theme, util_theme.c
118  */
119 void savetheme(const char *file);
120 void loadtheme(const char *file, bool compatibility);
121 void setdeftheme(enum bsddialog_default_theme theme);
122 void bikeshed(struct bsddialog_conf *conf);
123 void startuptheme(void);
124 
125 #endif
126