1Curses::UI::Menubar(3)User Contributed Perl DocumentationCurses::UI::Menubar(3)
2
3
4
6 Curses::UI::Menubar - Create and manipulate menubar widgets
7
9 Curses::UI::Widget
10 |
11 +----Curses::UI::Container
12 |
13 +----Curses::UI::Window
14 |
15 +----Curses::UI::Menubar
16
18 use Curses::UI;
19 my $cui = new Curses::UI;
20
21 # define the menu datastructure.
22 my $menu_data = [....];
23
24 my $menu = $cui->add(
25 'menu', 'Menubar',
26 -menu => $menu_data
27 );
28
29 $menu->focus();
30
32 This class can be used to add a menubar to Curses::UI. This menubar can
33 contain a complete submenu hierarchy. It looks (remotely :-) like this:
34
35 -------------------------------------
36 menu1 | menu2 | menu3 | ....
37 -------------------------------------
38 +-------------+
39 |menuitem 1 |
40 |menuitem 2 |+--------------+
41 |menuitem 3 >>||submenuitem 1 |
42 |menuitem 4 ||submenuitem 2 |
43 +-------------+|submenuitem 3 |
44 |submenuitem 4 |
45 |submenuitem 5 |
46 +--------------+
47
48 See exampes/demo-Curses::UI::Menubar in the distribution for a short
49 demo.
50
52 This class does not use any of the standard options that are provided
53 by Curses::UI::Widget.
54
56 There is only one option: -menu. The value for this option is an
57 ARRAYREF. This ARRAYREF behaves exactly like the one that is described
58 in Curses::UI::MenuListbox. The difference is that for the top-level
59 menu, you will only use -submenu's. Example data structure:
60
61 my $menu1 = [
62 { -label => 'option 1', -value => '1-1' },
63 { -label => 'option 2', -value => '1-2' },
64 { -label => 'option 3', -value => '1-3' },
65 ];
66
67 my $menu2 = [
68 { -label => 'option 1', -value => \&sel1 },
69 { -label => 'option 2', -value => \&sel2 },
70 { -label => 'option 3', -value => \&sel3 },
71 ];
72
73 my $submenu = [
74 { -label => 'suboption 1', -value => '3-3-1' },
75 { -label => 'suboption 2', -callback=> \&do_it },
76 ];
77
78 my $menu3 = [
79 { -label => 'option 1', -value => \&sel2 },
80 { -label => 'option 2', -value => \&sel3 },
81 { -label => 'submenu 1', -submenu => $submenu },
82 ];
83
84 my $menu = [
85 { -label => 'menu 1', -submenu => $menu1 },
86 { -label => 'menu 2', -submenu => $menu2 }
87 { -label => 'menu 3', -submenu => $menu3 }
88 ];
89
91 · new ( OPTIONS )
92
93 · layout ( )
94
95 · draw ( BOOLEAN )
96
97 · focus ( )
98
99 These are standard methods. See Curses::UI::Widget for an
100 explanation of these.
101
103 · <escape>
104
105 Call the 'escape' routine. This will have the menubar loose its
106 focus and return the value 'ESCAPE' to the calling routine.
107
108 · <tab>
109
110 Call the 'return' routine. This will have the menubar loose its
111 focus and return the value 'LOOSE_FOCUS' to the calling routine.
112
113 · <cursor-down>, <j>, <enter>
114
115 Call the 'pulldown' routine. This will open the menulistbox for the
116 current menu and give that menulistbox the focus. What happens
117 after the menulistbox loses its focus, depends upon the returnvalue
118 of it:
119
120 * the value 'CURSOR_LEFT'
121
122 Call the 'cursor-left' routine and after that
123 call the 'pulldown' routine. So this will open
124 the menulistbox for the previous menu.
125
126 * the value 'CURSOR_RIGHT'
127
128 Call the 'cursor-right' routine and after that
129 call the 'pulldown' routine. So this will open
130 the menulistbox for the next menu.
131
132 * the value 'LOOSE_FOCUS'
133
134 The menubar will keep the focus, but no
135 menulistbox will be open.
136
137 * the value 'ESCAPE'
138
139 The menubar will loose its focus and return the
140 value 'ESCAPE' to the calling routine.
141
142 * A CODE reference
143
144 The code will be excuted, the menubar will loose its
145 focus and the returnvalue of the CODE will be
146 returned to the calling routine.
147
148 * Any other value
149
150 The menubar will loose its focus and the value will
151 be returned to the calling routine.
152
153 · <cursor-left>, <h>
154
155 Call the 'cursor-left' routine. This will select the previous menu.
156 If the first menu is already selected, the last menu will be
157 selected.
158
159 · <cursor-right>, <l>
160
161 Call the 'cursor-right' routine. This will select the next menu. If
162 the last menu is already selected, the first menu will be selected.
163
165 Curses::UI, Curses::UI::MenuListbox, Curses::UI::Listbox
166
168 Copyright (c) 2001-2002 Maurice Makaay. All rights reserved.
169
170 Maintained by Marcus Thiesen (marcus@cpan.thiesenweb.de)
171
172 This package is free software and is provided "as is" without express
173 or implied warranty. It may be used, redistributed and/or modified
174 under the same terms as perl itself.
175
176
177
178perl v5.32.0 2020-07-28 Curses::UI::Menubar(3)