Linux server1.sbs.cy 5.14.0-362.18.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jan 29 07:05:48 EST 2024 x86_64
Apache
: 199.192.25.12 | : 108.162.216.131
28 Domain
8.1.31
administrator
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
usr /
include /
[ HOME SHELL ]
Name
Size
Permission
Action
GL
[ DIR ]
drwxr-xr-x
X11
[ DIR ]
drwxr-xr-x
arpa
[ DIR ]
drwxr-xr-x
asm
[ DIR ]
drwxr-xr-x
asm-generic
[ DIR ]
drwxr-xr-x
bind9
[ DIR ]
drwxr-xr-x
bits
[ DIR ]
drwxr-xr-x
blkid
[ DIR ]
drwxr-xr-x
brotli
[ DIR ]
drwxr-xr-x
c++
[ DIR ]
drwxr-xr-x
drm
[ DIR ]
drwxr-xr-x
e2p
[ DIR ]
drwxr-xr-x
et
[ DIR ]
drwxr-xr-x
event2
[ DIR ]
drwxr-xr-x
ext2fs
[ DIR ]
drwxr-xr-x
finclude
[ DIR ]
drwxr-xr-x
fontconfig
[ DIR ]
drwxr-xr-x
freetype2
[ DIR ]
drwxr-xr-x
fstrm
[ DIR ]
drwxr-xr-x
gdbm
[ DIR ]
drwxr-xr-x
gio-unix-2.0
[ DIR ]
drwxr-xr-x
glib-2.0
[ DIR ]
drwxr-xr-x
gnu
[ DIR ]
drwxr-xr-x
google
[ DIR ]
drwxr-xr-x
graphite2
[ DIR ]
drwxr-xr-x
gssapi
[ DIR ]
drwxr-xr-x
gssrpc
[ DIR ]
drwxr-xr-x
harfbuzz
[ DIR ]
drwxr-xr-x
json-c
[ DIR ]
drwxr-xr-x
kadm5
[ DIR ]
drwxr-xr-x
krb5
[ DIR ]
drwxr-xr-x
libexslt
[ DIR ]
drwxr-xr-x
libltdl
[ DIR ]
drwxr-xr-x
libmount
[ DIR ]
drwxr-xr-x
libpng16
[ DIR ]
drwxr-xr-x
libxml2
[ DIR ]
drwxr-xr-x
libxslt
[ DIR ]
drwxr-xr-x
linux
[ DIR ]
drwxr-xr-x
lzma
[ DIR ]
drwxr-xr-x
misc
[ DIR ]
drwxr-xr-x
mtd
[ DIR ]
drwxr-xr-x
mysql
[ DIR ]
drwxr-xr-x
ncurses
[ DIR ]
drwxr-xr-x
ncursesw
[ DIR ]
drwxr-xr-x
net
[ DIR ]
drwxr-xr-x
netash
[ DIR ]
drwxr-xr-x
netatalk
[ DIR ]
drwxr-xr-x
netax25
[ DIR ]
drwxr-xr-x
neteconet
[ DIR ]
drwxr-xr-x
netinet
[ DIR ]
drwxr-xr-x
netipx
[ DIR ]
drwxr-xr-x
netiucv
[ DIR ]
drwxr-xr-x
netpacket
[ DIR ]
drwxr-xr-x
netrom
[ DIR ]
drwxr-xr-x
netrose
[ DIR ]
drwxr-xr-x
nfs
[ DIR ]
drwxr-xr-x
openssl
[ DIR ]
drwxr-xr-x
pcp
[ DIR ]
drwxr-xr-x
protobuf-c
[ DIR ]
drwxr-xr-x
protocols
[ DIR ]
drwxr-xr-x
python3.9
[ DIR ]
drwxr-xr-x
rdma
[ DIR ]
drwxr-xr-x
rpc
[ DIR ]
drwxr-xr-x
scsi
[ DIR ]
drwxr-xr-x
security
[ DIR ]
drwxr-xr-x
selinux
[ DIR ]
drwxr-xr-x
sepol
[ DIR ]
drwxr-xr-x
sound
[ DIR ]
drwxr-xr-x
sys
[ DIR ]
drwxr-xr-x
sysprof-4
[ DIR ]
drwxr-xr-x
unicode
[ DIR ]
drwxr-xr-x
video
[ DIR ]
drwxr-xr-x
webp
[ DIR ]
drwxr-xr-x
xcb
[ DIR ]
drwxr-xr-x
xen
[ DIR ]
drwxr-xr-x
FlexLexer.h
6.73
KB
-rw-r--r--
a.out.h
4.25
KB
-rw-r--r--
aio.h
7.56
KB
-rw-r--r--
aliases.h
1.98
KB
-rw-r--r--
alloca.h
1.17
KB
-rw-r--r--
ar.h
1.69
KB
-rw-r--r--
argp.h
24.95
KB
-rw-r--r--
argz.h
5.91
KB
-rw-r--r--
assert.h
4.46
KB
-rw-r--r--
autosprintf.h
2.36
KB
-rw-r--r--
byteswap.h
1.42
KB
-rw-r--r--
bzlib.h
6.09
KB
-rw-r--r--
com_err.h
2.07
KB
-rw-r--r--
complex.h
7.95
KB
-rw-r--r--
cpio.h
2.21
KB
-rw-r--r--
cpuidle.h
844
B
-rw-r--r--
crypt.h
10.9
KB
-rw-r--r--
ctype.h
10.71
KB
-rw-r--r--
curses.h
96.82
KB
-rw-r--r--
cursesapp.h
7.06
KB
-rw-r--r--
cursesf.h
27.37
KB
-rw-r--r--
cursesm.h
19.44
KB
-rw-r--r--
cursesp.h
8.55
KB
-rw-r--r--
cursesw.h
49.13
KB
-rw-r--r--
cursslk.h
7.15
KB
-rw-r--r--
dbm.h
1.37
KB
-rw-r--r--
dirent.h
12.22
KB
-rw-r--r--
dlfcn.h
7.52
KB
-rw-r--r--
elf.h
178.14
KB
-rw-r--r--
endian.h
2.25
KB
-rw-r--r--
entities.h
4.81
KB
-rw-r--r--
envz.h
2.8
KB
-rw-r--r--
err.h
2.29
KB
-rw-r--r--
errno.h
1.64
KB
-rw-r--r--
error.h
2.36
KB
-rw-r--r--
eti.h
2.9
KB
-rw-r--r--
etip.h
9.61
KB
-rw-r--r--
evdns.h
1.97
KB
-rw-r--r--
event.h
2.68
KB
-rw-r--r--
evhttp.h
1.99
KB
-rw-r--r--
evrpc.h
1.97
KB
-rw-r--r--
evutil.h
1.74
KB
-rw-r--r--
execinfo.h
1.49
KB
-rw-r--r--
expat.h
42.75
KB
-rw-r--r--
expat_config.h
3.82
KB
-rw-r--r--
expat_external.h
5.89
KB
-rw-r--r--
fcntl.h
11.17
KB
-rw-r--r--
features-time64.h
1.37
KB
-rw-r--r--
features.h
17.69
KB
-rw-r--r--
fenv.h
5.65
KB
-rw-r--r--
ffi-x86_64.h
13.88
KB
-rw-r--r--
ffi.h
556
B
-rw-r--r--
ffitarget-x86_64.h
4.63
KB
-rw-r--r--
ffitarget.h
616
B
-rw-r--r--
fmtmsg.h
3.16
KB
-rw-r--r--
fnmatch.h
2.24
KB
-rw-r--r--
form.h
18.46
KB
-rw-r--r--
fpu_control.h
3.5
KB
-rw-r--r--
fstab.h
3.04
KB
-rw-r--r--
fstrm.h
12.71
KB
-rw-r--r--
fts.h
9.35
KB
-rw-r--r--
ftw.h
6.19
KB
-rw-r--r--
gconv.h
4.11
KB
-rw-r--r--
gd.h
58.25
KB
-rw-r--r--
gd_color_map.h
478
B
-rw-r--r--
gd_errors.h
1.47
KB
-rw-r--r--
gd_io.h
2.93
KB
-rw-r--r--
gdbm.h
11.9
KB
-rw-r--r--
gdcache.h
2.92
KB
-rw-r--r--
gdfontg.h
553
B
-rw-r--r--
gdfontl.h
551
B
-rw-r--r--
gdfontmb.h
519
B
-rw-r--r--
gdfonts.h
515
B
-rw-r--r--
gdfontt.h
546
B
-rw-r--r--
gdfx.h
496
B
-rw-r--r--
gdpp.h
50.73
KB
-rw-r--r--
getopt.h
1.43
KB
-rw-r--r--
gettext-po.h
15.18
KB
-rw-r--r--
glob.h
7.13
KB
-rw-r--r--
gnu-versions.h
2.29
KB
-rw-r--r--
gnumake.h
2.84
KB
-rw-r--r--
gpg-error.h
71.92
KB
-rw-r--r--
gpgrt.h
71.92
KB
-rw-r--r--
grp.h
6.53
KB
-rw-r--r--
gshadow.h
4.42
KB
-rw-r--r--
gssapi.h
181
B
-rw-r--r--
iconv.h
1.81
KB
-rw-r--r--
idn-free.h
2.56
KB
-rw-r--r--
idn-int.h
20
B
-rw-r--r--
idna.h
3.89
KB
-rw-r--r--
ieee754.h
4.8
KB
-rw-r--r--
ifaddrs.h
2.77
KB
-rw-r--r--
inttypes.h
8.14
KB
-rw-r--r--
jconfig-64.h
1.98
KB
-rw-r--r--
jconfig.h
246
B
-rw-r--r--
jerror.h
15.35
KB
-rw-r--r--
jmorecfg.h
13.98
KB
-rw-r--r--
jpegint.h
15.25
KB
-rw-r--r--
jpeglib.h
49.1
KB
-rw-r--r--
kdb.h
62.83
KB
-rw-r--r--
keyutils.h
11.52
KB
-rw-r--r--
krad.h
8.72
KB
-rw-r--r--
krb5.h
402
B
-rw-r--r--
langinfo.h
17.43
KB
-rw-r--r--
lastlog.h
126
B
-rw-r--r--
libaio.h
8.75
KB
-rw-r--r--
libgen.h
1.35
KB
-rw-r--r--
libintl.h
4.47
KB
-rw-r--r--
limits.h
5.57
KB
-rw-r--r--
link.h
7.05
KB
-rw-r--r--
lmdb.h
72.28
KB
-rw-r--r--
locale.h
7.5
KB
-rw-r--r--
ltdl.h
5.58
KB
-rw-r--r--
lzma.h
9.63
KB
-rw-r--r--
malloc.h
5.77
KB
-rw-r--r--
math.h
47.63
KB
-rw-r--r--
maxminddb.h
8.34
KB
-rw-r--r--
maxminddb_config-64.h
504
B
-rw-r--r--
maxminddb_config.h
178
B
-rw-r--r--
mcheck.h
2.38
KB
-rw-r--r--
memory.h
956
B
-rw-r--r--
menu.h
11.6
KB
-rw-r--r--
mntent.h
3.28
KB
-rw-r--r--
monetary.h
1.92
KB
-rw-r--r--
mqueue.h
4.5
KB
-rw-r--r--
nc_tparm.h
4.67
KB
-rw-r--r--
ncurses.h
96.82
KB
-rw-r--r--
ncurses_dll.h
3.95
KB
-rw-r--r--
ndbm.h
2.39
KB
-rw-r--r--
netdb.h
27.79
KB
-rw-r--r--
nl_types.h
1.71
KB
-rw-r--r--
nss.h
14.07
KB
-rw-r--r--
obstack.h
20.81
KB
-rw-r--r--
panel.h
4.41
KB
-rw-r--r--
paths.h
2.91
KB
-rw-r--r--
pcre.h
30.97
KB
-rw-r--r--
pcre2.h
46.15
KB
-rw-r--r--
pcre2posix.h
6.52
KB
-rw-r--r--
pcre_scanner.h
6.45
KB
-rw-r--r--
pcre_stringpiece.h
6.16
KB
-rw-r--r--
pcrecpp.h
25.91
KB
-rw-r--r--
pcrecpparg.h
6.62
KB
-rw-r--r--
pcreposix.h
5.74
KB
-rw-r--r--
png.h
139.51
KB
-rw-r--r--
pngconf.h
22.31
KB
-rw-r--r--
pnglibconf.h
7.43
KB
-rw-r--r--
poll.h
22
B
-rw-r--r--
powercap.h
1.62
KB
-rw-r--r--
pr29.h
2.19
KB
-rw-r--r--
printf.h
6.71
KB
-rw-r--r--
proc_service.h
3.4
KB
-rw-r--r--
profile.h
11.87
KB
-rw-r--r--
pthread.h
47.24
KB
-rw-r--r--
pty.h
1.53
KB
-rw-r--r--
punycode.h
9.3
KB
-rw-r--r--
pwd.h
6.17
KB
-rw-r--r--
re_comp.h
963
B
-rw-r--r--
regex.h
25.3
KB
-rw-r--r--
regexp.h
1.41
KB
-rw-r--r--
resolv.h
12.02
KB
-rw-r--r--
sched.h
4.92
KB
-rw-r--r--
search.h
5.32
KB
-rw-r--r--
semaphore.h
3.38
KB
-rw-r--r--
setjmp.h
3.12
KB
-rw-r--r--
sgtty.h
1.31
KB
-rw-r--r--
shadow.h
5.34
KB
-rw-r--r--
signal.h
12.73
KB
-rw-r--r--
spawn.h
7.84
KB
-rw-r--r--
stab.h
264
B
-rw-r--r--
stdc-predef.h
2.24
KB
-rw-r--r--
stdint.h
8.28
KB
-rw-r--r--
stdio.h
30.67
KB
-rw-r--r--
stdio_ext.h
2.73
KB
-rw-r--r--
stdlib.h
35.46
KB
-rw-r--r--
string.h
18.33
KB
-rw-r--r--
stringprep.h
9.53
KB
-rw-r--r--
strings.h
4.64
KB
-rw-r--r--
syscall.h
25
B
-rw-r--r--
sysexits.h
5.11
KB
-rw-r--r--
syslog.h
24
B
-rw-r--r--
tar.h
3.7
KB
-rw-r--r--
term.h
40.95
KB
-rw-r--r--
term_entry.h
8.9
KB
-rw-r--r--
termcap.h
3.39
KB
-rw-r--r--
termio.h
214
B
-rw-r--r--
termios.h
3.51
KB
-rw-r--r--
tgmath.h
39.24
KB
-rw-r--r--
thread_db.h
15.65
KB
-rw-r--r--
threads.h
7.51
KB
-rw-r--r--
tic.h
14.48
KB
-rw-r--r--
tiff.h
46.33
KB
-rw-r--r--
tiffconf-64.h
3.19
KB
-rw-r--r--
tiffconf.h
250
B
-rw-r--r--
tiffio.h
24.13
KB
-rw-r--r--
tiffio.hxx
1.62
KB
-rw-r--r--
tiffvers.h
410
B
-rw-r--r--
time.h
14.49
KB
-rw-r--r--
tld.h
4.85
KB
-rw-r--r--
ttyent.h
2.44
KB
-rw-r--r--
uchar.h
1.96
KB
-rw-r--r--
ucontext.h
1.99
KB
-rw-r--r--
ulimit.h
1.55
KB
-rw-r--r--
unctrl.h
3.1
KB
-rw-r--r--
unistd.h
43.45
KB
-rw-r--r--
utime.h
1.86
KB
-rw-r--r--
utmp.h
3.15
KB
-rw-r--r--
utmpx.h
4
KB
-rw-r--r--
values.h
1.91
KB
-rw-r--r--
verto-module.h
6.48
KB
-rw-r--r--
verto.h
18.98
KB
-rw-r--r--
wait.h
22
B
-rw-r--r--
wchar.h
31.39
KB
-rw-r--r--
wctype.h
5.42
KB
-rw-r--r--
wordexp.h
2.44
KB
-rw-r--r--
zconf.h
15.88
KB
-rw-r--r--
zlib.h
94
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : cursesm.h
// * This makes emacs happy -*-Mode: C++;-*- /**************************************************************************** * Copyright 2019,2020 Thomas E. Dickey * * Copyright 1998-2012,2014 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * * "Software"), to deal in the Software without restriction, including * * without limitation the rights to use, copy, modify, merge, publish, * * distribute, distribute with modifications, sublicense, and/or sell * * copies of the Software, and to permit persons to whom the Software is * * furnished to do so, subject to the following conditions: * * * * The above copyright notice and this permission notice shall be included * * in all copies or substantial portions of the Software. * * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * * * Except as contained in this notice, the name(s) of the above copyright * * holders shall not be used in advertising or otherwise to promote the * * sale, use or other dealings in this Software without prior written * * authorization. * ****************************************************************************/ /**************************************************************************** * Author: Juergen Pfeifer, 1997 * ****************************************************************************/ // $Id: cursesm.h,v 1.34 2020/05/24 01:40:20 anonymous.maarten Exp $ #ifndef NCURSES_CURSESM_H_incl #define NCURSES_CURSESM_H_incl 1 #include <cursesp.h> extern "C" { # include <menu.h> } // // ------------------------------------------------------------------------- // This wraps the ITEM type of <menu.h> // ------------------------------------------------------------------------- // class NCURSES_CXX_IMPEXP NCursesMenuItem { friend class NCursesMenu; protected: ITEM *item; inline void OnError (int err) const THROW2(NCursesException const, NCursesMenuException) { if (err != E_OK) THROW(new NCursesMenuException (err)); } public: NCursesMenuItem (const char* p_name = NULL, const char* p_descript = NULL) : item(0) { item = p_name ? ::new_item (p_name, p_descript) : STATIC_CAST(ITEM*)(0); if (p_name && !item) OnError (E_SYSTEM_ERROR); } // Create an item. If you pass both parameters as NULL, a delimiting // item is constructed which can be used to terminate a list of // NCursesMenu objects. NCursesMenuItem& operator=(const NCursesMenuItem& rhs) { if (this != &rhs) { *this = rhs; } return *this; } NCursesMenuItem(const NCursesMenuItem& rhs) : item(0) { (void) rhs; } virtual ~NCursesMenuItem () THROWS(NCursesException); // Release the items memory inline const char* name () const { return ::item_name (item); } // Name of the item inline const char* description () const { return ::item_description (item); } // Description of the item inline int (index) (void) const { return ::item_index (item); } // Index of the item in an item array (or -1) inline void options_on (Item_Options opts) { OnError (::item_opts_on (item, opts)); } // Switch on the items options inline void options_off (Item_Options opts) { OnError (::item_opts_off (item, opts)); } // Switch off the item's option inline Item_Options options () const { return ::item_opts (item); } // Retrieve the items options inline void set_options (Item_Options opts) { OnError (::set_item_opts (item, opts)); } // Set the items options inline void set_value (bool f) { OnError (::set_item_value (item,f)); } // Set/Reset the items selection state inline bool value () const { return ::item_value (item); } // Retrieve the items selection state inline bool visible () const { return ::item_visible (item); } // Retrieve visibility of the item virtual bool action(); // Perform an action associated with this item; you may use this in an // user supplied driver for a menu; you may derive from this class and // overload action() to supply items with different actions. // If an action returns true, the menu will be exited. The default action // is to do nothing. }; // Prototype for an items callback function. typedef bool ITEMCALLBACK(NCursesMenuItem&); // If you don't like to create a child class for individual items to // overload action(), you may use this class and provide a callback // function pointer for items. class NCURSES_CXX_IMPEXP NCursesMenuCallbackItem : public NCursesMenuItem { private: ITEMCALLBACK* p_fct; public: NCursesMenuCallbackItem(ITEMCALLBACK* fct = NULL, const char* p_name = NULL, const char* p_descript = NULL ) : NCursesMenuItem (p_name, p_descript), p_fct (fct) { } NCursesMenuCallbackItem& operator=(const NCursesMenuCallbackItem& rhs) { if (this != &rhs) { *this = rhs; } return *this; } NCursesMenuCallbackItem(const NCursesMenuCallbackItem& rhs) : NCursesMenuItem(rhs), p_fct(0) { } virtual ~NCursesMenuCallbackItem() THROWS(NCursesException); bool action(); }; // This are the built-in hook functions in this C++ binding. In C++ we use // virtual member functions (see below On_..._Init and On_..._Termination) // to provide this functionality in an object oriented manner. extern "C" { void _nc_xx_mnu_init(MENU *); void _nc_xx_mnu_term(MENU *); void _nc_xx_itm_init(MENU *); void _nc_xx_itm_term(MENU *); } // // ------------------------------------------------------------------------- // This wraps the MENU type of <menu.h> // ------------------------------------------------------------------------- // class NCURSES_CXX_IMPEXP NCursesMenu : public NCursesPanel { protected: MENU *menu; private: NCursesWindow* sub; // the subwindow object bool b_sub_owner; // is this our own subwindow? bool b_framed; // has the menu a border? bool b_autoDelete; // Delete items when deleting menu? NCursesMenuItem** my_items; // The array of items for this menu // This structure is used for the menu's user data field to link the // MENU* to the C++ object and to provide extra space for a user pointer. typedef struct { void* m_user; // the pointer for the user's data const NCursesMenu* m_back; // backward pointer to C++ object const MENU* m_owner; } UserHook; // Get the backward pointer to the C++ object from a MENU static inline NCursesMenu* getHook(const MENU *m) { UserHook* hook = STATIC_CAST(UserHook*)(::menu_userptr(m)); assert(hook != 0 && hook->m_owner==m); return const_cast<NCursesMenu*>(hook->m_back); } friend void _nc_xx_mnu_init(MENU *); friend void _nc_xx_mnu_term(MENU *); friend void _nc_xx_itm_init(MENU *); friend void _nc_xx_itm_term(MENU *); // Calculate ITEM* array for the menu ITEM** mapItems(NCursesMenuItem* nitems[]); protected: // internal routines inline void set_user(void *user) { UserHook* uptr = STATIC_CAST(UserHook*)(::menu_userptr (menu)); assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu); uptr->m_user = user; } inline void *get_user() { UserHook* uptr = STATIC_CAST(UserHook*)(::menu_userptr (menu)); assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu); return uptr->m_user; } void InitMenu (NCursesMenuItem* menu[], bool with_frame, bool autoDeleteItems); inline void OnError (int err) const THROW2(NCursesException const, NCursesMenuException) { if (err != E_OK) THROW(new NCursesMenuException (this, err)); } // this wraps the menu_driver call. virtual int driver (int c) ; // 'Internal' constructor to create a menu without association to // an array of items. NCursesMenu( int nlines, int ncols, int begin_y = 0, int begin_x = 0) : NCursesPanel(nlines,ncols,begin_y,begin_x), menu (STATIC_CAST(MENU*)(0)), sub(0), b_sub_owner(0), b_framed(0), b_autoDelete(0), my_items(0) { } public: // Make a full window size menu NCursesMenu (NCursesMenuItem* Items[], bool with_frame=FALSE, // Reserve space for a frame? bool autoDelete_Items=FALSE) // Autocleanup of Items? : NCursesPanel(), menu(0), sub(0), b_sub_owner(0), b_framed(0), b_autoDelete(0), my_items(0) { InitMenu(Items, with_frame, autoDelete_Items); } // Make a menu with a window of this size. NCursesMenu (NCursesMenuItem* Items[], int nlines, int ncols, int begin_y = 0, int begin_x = 0, bool with_frame=FALSE, // Reserve space for a frame? bool autoDelete_Items=FALSE) // Autocleanup of Items? : NCursesPanel(nlines, ncols, begin_y, begin_x), menu(0), sub(0), b_sub_owner(0), b_framed(0), b_autoDelete(0), my_items(0) { InitMenu(Items, with_frame, autoDelete_Items); } NCursesMenu& operator=(const NCursesMenu& rhs) { if (this != &rhs) { *this = rhs; NCursesPanel::operator=(rhs); } return *this; } NCursesMenu(const NCursesMenu& rhs) : NCursesPanel(rhs), menu(rhs.menu), sub(rhs.sub), b_sub_owner(rhs.b_sub_owner), b_framed(rhs.b_framed), b_autoDelete(rhs.b_autoDelete), my_items(rhs.my_items) { } virtual ~NCursesMenu () THROWS(NCursesException); // Retrieve the menus subwindow inline NCursesWindow& subWindow() const { assert(sub!=NULL); return *sub; } // Set the menus subwindow void setSubWindow(NCursesWindow& sub); // Set these items for the menu inline void setItems(NCursesMenuItem* Items[]) { OnError(::set_menu_items(menu,mapItems(Items))); } // Remove the menu from the screen inline void unpost (void) { OnError (::unpost_menu (menu)); } // Post the menu to the screen if flag is true, unpost it otherwise inline void post(bool flag = TRUE) { flag ? OnError (::post_menu(menu)) : OnError (::unpost_menu (menu)); } // Get the number of rows and columns for this menu inline void scale (int& mrows, int& mcols) const { OnError (::scale_menu (menu, &mrows, &mcols)); } // Set the format of this menu inline void set_format(int mrows, int mcols) { OnError (::set_menu_format(menu, mrows, mcols)); } // Get the format of this menu inline void menu_format(int& rows,int& ncols) { ::menu_format(menu,&rows,&ncols); } // Items of the menu inline NCursesMenuItem* items() const { return *my_items; } // Get the number of items in this menu inline int count() const { return ::item_count(menu); } // Get the current item (i.e. the one the cursor is located) inline NCursesMenuItem* current_item() const { return my_items[::item_index(::current_item(menu))]; } // Get the marker string inline const char* mark() const { return ::menu_mark(menu); } // Set the marker string inline void set_mark(const char *marker) { OnError (::set_menu_mark (menu, marker)); } // Get the name of the request code c inline static const char* request_name(int c) { return ::menu_request_name(c); } // Get the current pattern inline char* pattern() const { return ::menu_pattern(menu); } // true if there is a pattern match, false otherwise. bool set_pattern (const char *pat); // set the default attributes for the menu // i.e. set fore, back and grey attribute virtual void setDefaultAttributes(); // Get the menus background attributes inline chtype back() const { return ::menu_back(menu); } // Get the menus foreground attributes inline chtype fore() const { return ::menu_fore(menu); } // Get the menus grey attributes (used for unselectable items) inline chtype grey() const { return ::menu_grey(menu); } // Set the menus background attributes inline chtype set_background(chtype a) { return ::set_menu_back(menu,a); } // Set the menus foreground attributes inline chtype set_foreground(chtype a) { return ::set_menu_fore(menu,a); } // Set the menus grey attributes (used for unselectable items) inline chtype set_grey(chtype a) { return ::set_menu_grey(menu,a); } inline void options_on (Menu_Options opts) { OnError (::menu_opts_on (menu,opts)); } inline void options_off(Menu_Options opts) { OnError (::menu_opts_off(menu,opts)); } inline Menu_Options options() const { return ::menu_opts(menu); } inline void set_options (Menu_Options opts) { OnError (::set_menu_opts (menu,opts)); } inline int pad() const { return ::menu_pad(menu); } inline void set_pad (int padch) { OnError (::set_menu_pad (menu, padch)); } // Position the cursor to the current item inline void position_cursor () const { OnError (::pos_menu_cursor (menu)); } // Set the current item inline void set_current(NCursesMenuItem& I) { OnError (::set_current_item(menu, I.item)); } // Get the current top row of the menu inline int top_row (void) const { return ::top_row (menu); } // Set the current top row of the menu inline void set_top_row (int row) { OnError (::set_top_row (menu, row)); } // spacing control // Set the spacing for the menu inline void setSpacing(int spc_description, int spc_rows, int spc_columns) { OnError(::set_menu_spacing(menu, spc_description, spc_rows, spc_columns)); } // Get the spacing info for the menu inline void Spacing(int& spc_description, int& spc_rows, int& spc_columns) const { OnError(::menu_spacing(menu, &spc_description, &spc_rows, &spc_columns)); } // Decorations inline void frame(const char *title=NULL, const char* btitle=NULL) { if (b_framed) NCursesPanel::frame(title,btitle); else OnError(E_SYSTEM_ERROR); } inline void boldframe(const char *title=NULL, const char* btitle=NULL) { if (b_framed) NCursesPanel::boldframe(title,btitle); else OnError(E_SYSTEM_ERROR); } inline void label(const char *topLabel, const char *bottomLabel) { if (b_framed) NCursesPanel::label(topLabel,bottomLabel); else OnError(E_SYSTEM_ERROR); } // ----- // Hooks // ----- // Called after the menu gets repositioned in its window. // This is especially true if the menu is posted. virtual void On_Menu_Init(); // Called before the menu gets repositioned in its window. // This is especially true if the menu is unposted. virtual void On_Menu_Termination(); // Called after the item became the current item virtual void On_Item_Init(NCursesMenuItem& item); // Called before this item is left as current item. virtual void On_Item_Termination(NCursesMenuItem& item); // Provide a default key virtualization. Translate the keyboard // code c into a menu request code. // The default implementation provides a hopefully straightforward // mapping for the most common keystrokes and menu requests. virtual int virtualize(int c); // Operators inline NCursesMenuItem* operator[](int i) const { if ( (i < 0) || (i >= ::item_count (menu)) ) OnError (E_BAD_ARGUMENT); return (my_items[i]); } // Perform the menu's operation // Return the item where you left the selection mark for a single // selection menu, or NULL for a multivalued menu. virtual NCursesMenuItem* operator()(void); // -------------------- // Exception handlers // Called by operator() // -------------------- // Called if the request is denied virtual void On_Request_Denied(int c) const; // Called if the item is not selectable virtual void On_Not_Selectable(int c) const; // Called if pattern doesn't match virtual void On_No_Match(int c) const; // Called if the command is unknown virtual void On_Unknown_Command(int c) const; }; // // ------------------------------------------------------------------------- // This is the typical C++ typesafe way to allow to attach // user data to an item of a menu. Its assumed that the user // data belongs to some class T. Use T as template argument // to create a UserItem. // ------------------------------------------------------------------------- // template<class T> class NCURSES_CXX_IMPEXP NCursesUserItem : public NCursesMenuItem { public: NCursesUserItem (const char* p_name, const char* p_descript = NULL, const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesMenuItem (p_name, p_descript) { if (item) OnError (::set_item_userptr (item, const_cast<void *>(reinterpret_cast<const void*>(p_UserData)))); } virtual ~NCursesUserItem() THROWS(NCursesException) {} inline const T* UserData (void) const { return reinterpret_cast<const T*>(::item_userptr (item)); }; inline virtual void setUserData(const T* p_UserData) { if (item) OnError (::set_item_userptr (item, const_cast<void *>(reinterpret_cast<const void *>(p_UserData)))); } }; // // ------------------------------------------------------------------------- // The same mechanism is used to attach user data to a menu // ------------------------------------------------------------------------- // template<class T> class NCURSES_CXX_IMPEXP NCursesUserMenu : public NCursesMenu { protected: NCursesUserMenu( int nlines, int ncols, int begin_y = 0, int begin_x = 0, const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesMenu(nlines,ncols,begin_y,begin_x) { if (menu) set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData))); } public: NCursesUserMenu (NCursesMenuItem* Items[], const T* p_UserData = STATIC_CAST(T*)(0), bool with_frame=FALSE, bool autoDelete_Items=FALSE) : NCursesMenu (Items, with_frame, autoDelete_Items) { if (menu) set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData))); }; NCursesUserMenu (NCursesMenuItem* Items[], int nlines, int ncols, int begin_y = 0, int begin_x = 0, const T* p_UserData = STATIC_CAST(T*)(0), bool with_frame=FALSE) : NCursesMenu (Items, nlines, ncols, begin_y, begin_x, with_frame) { if (menu) set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData))); }; virtual ~NCursesUserMenu() THROWS(NCursesException) { }; inline T* UserData (void) { return reinterpret_cast<T*>(get_user ()); }; inline virtual void setUserData (const T* p_UserData) { if (menu) set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData))); } }; #endif /* NCURSES_CURSESM_H_incl */
Close