1/*	$NetBSD: menus.mc,v 1.13 2019/12/03 01:45:34 uwe Exp $	*/
2
3/*
4 * Copyright 1997 Piermont Information Systems Inc.
5 * All rights reserved.
6 *
7 * Written by Philip A. Nelson for Piermont Information Systems Inc.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 *    notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 * 3. All advertising materials mentioning features or use of this software
18 *    must display the following acknowledgement:
19 *      This product includes software developed for the NetBSD Project by
20 *      Piermont Information Systems Inc.
21 * 4. The name of Piermont Information Systems Inc. may not be used to endorse
22 *    or promote products derived from this software without specific prior
23 *    written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY PIERMONT INFORMATION SYSTEMS INC. ``AS IS''
26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 * ARE DISCLAIMED. IN NO EVENT SHALL PIERMONT INFORMATION SYSTEMS INC. BE 
29 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
30 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
31 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
35 * THE POSSIBILITY OF SUCH DAMAGE.
36 *
37 */
38
39{
40
41#include "msg_defs.h"
42
43/* Initial code for definitions and includes and  prototypes. */
44void do_dynamic (void);
45static int msg_init = 0;
46
47}
48
49default x=20, y=10;
50
51allow dynamic menus;
52
53error action { fprintf (stderr, "Testm: Could not initialize curses.\n");
54	       exit(1); };
55
56menu root, title "  Main Menu of Test System", x=10;
57	display action {
58		/* Message initialization */
59		if (!msg_init) {
60			msg_window (stdscr);
61			msg_init = 1;
62		}
63		msg_display (MSG_welcome);
64		wrefresh(stdscr); };
65	option  "Do nothing option", 
66		action  { }
67	;
68	option  "Try a sub menu",
69		sub menu  submenu
70	;
71	option  "A scrollable menu",
72		sub menu  scrollit
73	;
74	option  "Another scrollable menu",
75		sub menu scrollit2
76	;
77	option  "Big non-scrollable menu, bombs on small screens",
78		sub menu bigscroll
79	;
80	option  "A menu with no shortcuts",
81		sub menu noshort
82	; 
83	option  "A dynamic menu ...",
84		action { do_dynamic (); }
85	;
86	option	"Continuous title and menu ...",
87		sub menu contdemo
88	;
89	option  "Run a shell...",
90		action (endwin) { system ("/bin/sh"); }
91	;
92	exit action (endwin)  { printf ("Thanks for playing\n"); };
93	help {
94                    Main Menu Help Screen
95
96This is help text for the main menu of the menu test system.  This
97text should appear verbatim when asked for by use of the ? key by
98the user.  This should allow scrolling, if needed.  If the first
99character in the help is the newline (as the case for this help),
100then that newline is not included in the help text.
101
102Now this tests lines for scrolling:
10310
10411
10512
10613
10714
10815
10916
11017
11118
11219
11320
11421
11522
11623
11724
11825
11926
12027
12128
12229
12330
12431
12532
12633
12734
12835
12936
13037
13138
13239
13340
13441
13542
13643
13744
13845
13946
14047
14148
14249
14350
14451
14552
14653
14754
14855
14956
15057
15158
15259
15360
15461
15562
15663
15764
15865
15966
16067
16168
16269
16370
16471
16572
16673
16774
16875
16976
17077
17178
17279
17380
174};
175
176menu submenu, title "  submenu test";
177	option  "upper right", sub menu  upperright;
178	option  "lower left", sub menu  lowerleft;
179	option  "middle, no title", sub menu middle;
180	option  "next menu", next menu nextmenu;
181
182menu upperright, title "upper right", y=2, x=60, no exit;
183	option  "Just Exit!", exit;
184
185menu lowerleft, title "lower left", y=19, x=2, no exit;
186	option  "Just Exit!", exit;
187
188menu middle, no box;
189	option "Just Exit!", exit;
190
191menu nextmenu, title "  A next window! ? for comments", no exit;
192	option "Just Exit!:", exit;
193
194menu noshort, title "  No shortcut characters!", no shortcut;
195	option "first", action {};
196	option "second", action {};
197	option "third", action {};
198
199menu scrollit, scrollable, h=4, title "  Scrollable Menu";
200	option "option 1", action {};
201	option "option 2", action {};
202	option "option 3", action {};
203	option "option 4", action {};
204	option "option 5", action {};
205	option "option 6", action {};
206
207menu bigscroll, no scrollable, title "  Non-scrollable Menu";
208	option "option 1", action {};
209	option "option 2", action {};
210	option "option 3", action {};
211	option "option 4", action {};
212	option "option 5", action {};
213	option "option 6", action {};
214	option "option 7", action {};
215	option "option 8", action {};
216	option "option 9", action {};
217	option "option 10", action {};
218	option "option 11", action {};
219	option "option 12", action {};
220	option "option 13", action {};
221	option "option 14", action {};
222	option "option 15", action {};
223	option "option 16", action {};
224	option "option 17", action {};
225	option "option 18", action {};
226	option "option 19", action {};
227	option "option 20", action {};
228
229menu scrollit2, scrollable, title "  Big scrollable Menu";
230	option "option 1", action {};
231	option "option 2", action {};
232	option "option 3", action {};
233	option "option 4", action {};
234	option "option 5", action {};
235	option "option 6", action {};
236	option "option 7", action {};
237	option "option 8", action {};
238	option "option 9", action {};
239	option "option 10", action {};
240	option "option 11", action {};
241	option "option 12", action {};
242	option "option 13", action {};
243	option "option 14", action {};
244	option "option 15", action {};
245	option "option 16", action {};
246	option "option 17", action {};
247	option "option 18", action {};
248	option "option 19", action {};
249	option "option 20", action {};
250	option "option 21", action {};
251	option "option 22", action {};
252	option "option 23", action {};
253	option "option 24", action {};
254	option "option 25", action {};
255	option "option 26", action {};
256	option "option 27", action {};
257	option "option 28", action {};
258	option "option 29", action {};
259	option "option 30", action {};
260	option "option 31", action {};
261	option "option 32", action {};
262	option "option 33", action {};
263	option "option 34", action {};
264	option "option 35", action {};
265	option "option 36", action {};
266	option "option 37", action {};
267	option "option 38", action {};
268	option "option 39", action {};
269	option "option 40", action {};
270	option "option 41", action {};
271	option "option 42", action {};
272	option "option 43", action {};
273	option "option 44", action {};
274	option "option 45", action {};
275	option "option 46", action {};
276	option "option 47", action {};
277	option "option 48", action {};
278	option "option 49", action {};
279	option "option 50", action {};
280	option "option 51", action {};
281
282menu contdemo, title "Menus without space between title and menu", y=3, x=10;
283	option "With box", sub menu contdemo_box;
284	option "No box", sub menu contdemo_none;
285
286menu contdemo_box, title "title text ends here-->", y=3, x=10, no exit,
287	continuous title;
288	option  "<--- first menu item here", exit;
289
290menu contdemo_none, title "title text ends here-->", y=3, x=10, no box, no exit,
291	continuous title;
292	option  "<--- first menu item here", exit;
293
294