Notcurses 3.0.16
a blingful library for TUIs and character graphics
Loading...
Searching...
No Matches
Menu.hh
Go to the documentation of this file.
1#ifndef __NCPP_MENU_HH
2#define __NCPP_MENU_HH
3
5
6#include "Root.hh"
7
8namespace ncpp
9{
10 class NotCurses;
11 class Plane;
12
13 class NCPP_API_EXPORT Menu : public Root
14 {
15 public:
17
18 public:
19 explicit Menu (const ncmenu_options *opts = nullptr, NotCurses *ncinst = nullptr)
20 : Root (ncinst)
21 {
22 menu = ncmenu_create (notcurses_stdplane (get_notcurses ()), opts == nullptr ? &default_options : opts);
23 if (menu == nullptr)
24 throw init_error ("Notcurses failed to create a new menu");
25 }
26
28 {
29 if (!is_notcurses_stopped ())
30 ncmenu_destroy (menu);
31 }
32
33 bool unroll (int sectionidx) const NOEXCEPT_MAYBE
34 {
35 return error_guard (ncmenu_unroll (menu, sectionidx), -1);
36 }
37
38 bool rollup () const NOEXCEPT_MAYBE
39 {
40 return error_guard (ncmenu_rollup (menu), -1);
41 }
42
44 {
45 return error_guard (ncmenu_nextsection (menu), -1);
46 }
47
49 {
50 return error_guard (ncmenu_prevsection (menu), -1);
51 }
52
54 {
55 return error_guard (ncmenu_nextitem (menu), -1);
56 }
57
59 {
60 return error_guard (ncmenu_previtem (menu), -1);
61 }
62
63 bool item_set_status (const char* section, const char* item, bool status) const NOEXCEPT_MAYBE
64 {
65 return error_guard (ncmenu_item_set_status (menu, section, item, status), -1);
66 }
67
68 const char* get_selected (ncinput *ni = nullptr) const noexcept
69 {
70 return ncmenu_selected (menu, ni);
71 }
72
73 const char* get_mouse_selected (const struct ncinput* click, struct ncinput* ni) const noexcept
74 {
75 return ncmenu_mouse_selected (menu, click, ni);
76 }
77
78 bool offer_input (const struct ncinput* ni) const noexcept
79 {
80 return ncmenu_offer_input (menu, ni);
81 }
82
83 Plane* get_plane () const noexcept;
84
85 private:
86 ncmenu *menu;
87 };
88}
89#endif
#define NCPP_API_EXPORT
Definition _helpers.hh:9
#define NOEXCEPT_MAYBE
Definition Root.hh:15
bool item_set_status(const char *section, const char *item, bool status) const NOEXCEPT_MAYBE
Definition Menu.hh:63
const char * get_mouse_selected(const struct ncinput *click, struct ncinput *ni) const noexcept
Definition Menu.hh:73
Menu(const ncmenu_options *opts=nullptr, NotCurses *ncinst=nullptr)
Definition Menu.hh:19
~Menu()
Definition Menu.hh:27
bool prevsection() const NOEXCEPT_MAYBE
Definition Menu.hh:48
bool offer_input(const struct ncinput *ni) const noexcept
Definition Menu.hh:78
bool unroll(int sectionidx) const NOEXCEPT_MAYBE
Definition Menu.hh:33
bool nextitem() const NOEXCEPT_MAYBE
Definition Menu.hh:53
bool previtem() const NOEXCEPT_MAYBE
Definition Menu.hh:58
bool rollup() const NOEXCEPT_MAYBE
Definition Menu.hh:38
bool nextsection() const NOEXCEPT_MAYBE
Definition Menu.hh:43
static ncmenu_options default_options
Definition Menu.hh:16
Plane * get_plane() const noexcept
const char * get_selected(ncinput *ni=nullptr) const noexcept
Definition Menu.hh:68
int ncmenu_rollup(ncmenu *n)
Definition menu.c:554
ncmenu * ncmenu_create(ncplane *n, const ncmenu_options *opts)
Definition menu.c:377
int ncmenu_nextsection(ncmenu *n)
Definition menu.c:563
int ncmenu_prevsection(ncmenu *n)
Definition menu.c:578
const char * ncmenu_mouse_selected(const ncmenu *n, const ncinput *click, ncinput *ni)
Definition menu.c:673
int ncmenu_item_set_status(ncmenu *n, const char *section, const char *item, bool enabled)
Definition menu.c:784
int ncmenu_unroll(ncmenu *n, int sectionidx)
Definition menu.c:452
int ncmenu_previtem(ncmenu *n)
Definition menu.c:614
int ncmenu_nextitem(ncmenu *n)
Definition menu.c:593
void ncmenu_destroy(ncmenu *n)
Definition menu.c:825
const char * ncmenu_selected(const ncmenu *n, ncinput *ni)
Definition menu.c:635
bool ncmenu_offer_input(ncmenu *n, const ncinput *nc)
Definition menu.c:707
ncplane * notcurses_stdplane(notcurses *nc)
Definition notcurses.c:702
const struct ncplane_options * opts
Definition notcurses.h:3487
Definition menu.c:25