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. */ 44 void do_dynamic (void); 45 static int msg_init = 0; 46 47 } 48 49 default x=20, y=10; 50 51 allow dynamic menus; 52 53 error action { fprintf (stderr, "Testm: Could not initialize curses.\n"); 54 exit(1); }; 55 56 menu 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 96 This is help text for the main menu of the menu test system. This 97 text should appear verbatim when asked for by use of the ? key by 98 the user. This should allow scrolling, if needed. If the first 99 character in the help is the newline (as the case for this help), 100 then that newline is not included in the help text. 101 102 Now this tests lines for scrolling: 103 10 104 11 105 12 106 13 107 14 108 15 109 16 110 17 111 18 112 19 113 20 114 21 115 22 116 23 117 24 118 25 119 26 120 27 121 28 122 29 123 30 124 31 125 32 126 33 127 34 128 35 129 36 130 37 131 38 132 39 133 40 134 41 135 42 136 43 137 44 138 45 139 46 140 47 141 48 142 49 143 50 144 51 145 52 146 53 147 54 148 55 149 56 150 57 151 58 152 59 153 60 154 61 155 62 156 63 157 64 158 65 159 66 160 67 161 68 162 69 163 70 164 71 165 72 166 73 167 74 168 75 169 76 170 77 171 78 172 79 173 80 174 }; 175 176 menu 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 182 menu upperright, title "upper right", y=2, x=60, no exit; 183 option "Just Exit!", exit; 184 185 menu lowerleft, title "lower left", y=19, x=2, no exit; 186 option "Just Exit!", exit; 187 188 menu middle, no box; 189 option "Just Exit!", exit; 190 191 menu nextmenu, title " A next window! ? for comments", no exit; 192 option "Just Exit!:", exit; 193 194 menu noshort, title " No shortcut characters!", no shortcut; 195 option "first", action {}; 196 option "second", action {}; 197 option "third", action {}; 198 199 menu 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 207 menu 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 229 menu 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 282 menu 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 286 menu contdemo_box, title "title text ends here-->", y=3, x=10, no exit, 287 continuous title; 288 option "<--- first menu item here", exit; 289 290 menu 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