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