class Curses::Menu
Public Class Methods
new(name, description)
click to toggle source
Construct a new Curses::Menu.
static VALUE
menu_initialize(VALUE obj, VALUE items)
{
struct menudata *menup;
ITEM **menu_items;
int i;
Check_Type(items, T_ARRAY);
curses_init_screen();
TypedData_Get_Struct(obj, struct menudata, &menudata_type, menup);
if (menup->menu) {
rb_raise(rb_eRuntimeError, "already initialized menu");
}
menu_items = ALLOC_N(ITEM *, RARRAY_LEN(items) + 1);
for (i = 0; i < RARRAY_LEN(items); i++) {
struct itemdata *itemp;
GetITEM(RARRAY_AREF(items, i), itemp);
menu_items[i] = itemp->item;
}
menu_items[RARRAY_LEN(items)] = NULL;
menup->menu = new_menu(menu_items);
if (menup->menu == NULL) {
check_curses_error(errno);
}
menup->items = rb_ary_dup(items);
return obj;
}
Public Instance Methods
back_pattern()
click to toggle source
# File lib/curses.rb, line 83 def back_pattern driver(Curses::REQ_BACK_PATTERN) end
clear_pattern()
click to toggle source
# File lib/curses.rb, line 79 def clear_pattern driver(Curses::REQ_CLEAR_PATTERN) end
current_item
click to toggle source
Returns the current item.
static VALUE
menu_get_current_item(VALUE obj)
{
struct menudata *menup;
ITEM *item;
GetMENU(obj, menup);
item = current_item(menup->menu);
if (item == NULL) {
return Qnil;
}
return item_new(item);
}
current_item=(item)
click to toggle source
Sets the current item.
static VALUE
menu_set_current_item(VALUE obj, VALUE item)
{
struct menudata *menup;
struct itemdata *itemp;
GetMENU(obj, menup);
GetITEM(item, itemp);
set_current_item(menup->menu, itemp->item);
return item;
}
down_item()
click to toggle source
# File lib/curses.rb, line 39 def down_item driver(Curses::REQ_DOWN_ITEM) end
driver(command)
click to toggle source
Perform the command on the menu.
static VALUE
menu_driver_m(VALUE obj, VALUE command)
{
struct menudata *menup;
int error;
GetMENU(obj, menup);
error = menu_driver(menup->menu, NUM2INT(command));
check_curses_error(error);
return obj;
}
first_item()
click to toggle source
# File lib/curses.rb, line 59 def first_item driver(Curses::REQ_FIRST_ITEM) end
item_count
click to toggle source
Returns the count of items in the menu.
static VALUE
menu_item_count(VALUE obj)
{
struct menudata *menup;
GetMENU(obj, menup);
return INT2NUM(item_count(menup->menu));
}
items
click to toggle source
Returns the items of the menu.
static VALUE
menu_get_items(VALUE obj)
{
struct menudata *menup;
ITEM **items;
int count, i;
VALUE ary;
GetMENU(obj, menup);
items = menu_items(menup->menu);
if (items == NULL) {
return Qnil;
}
count = item_count(menup->menu);
ary = rb_ary_new();
for (i = 0; i < count; i++) {
rb_ary_push(ary, item_new(items[i]));
}
return ary;
}
items=(items)
click to toggle source
Returns the items of the menu.
static VALUE
menu_set_items(VALUE obj, VALUE items)
{
struct menudata *menup;
ITEM **old_items, **new_items;
int i, error;
Check_Type(items, T_ARRAY);
GetMENU(obj, menup);
old_items = menu_items(menup->menu);
new_items = ALLOC_N(ITEM*, RARRAY_LEN(items) + 1);
for (i = 0; i < RARRAY_LEN(items); i++) {
struct itemdata *itemp;
GetITEM(RARRAY_AREF(items, i), itemp);
new_items[i] = itemp->item;
}
new_items[RARRAY_LEN(items)] = NULL;
error = set_menu_items(menup->menu, new_items);
if (error != E_OK) {
xfree(new_items);
check_curses_error(error);
return items;
}
xfree(old_items);
menup->items = rb_ary_dup(items);
return items;
}
last_item()
click to toggle source
# File lib/curses.rb, line 63 def last_item driver(Curses::REQ_LAST_ITEM) end
left_item()
click to toggle source
# File lib/curses.rb, line 27 def left_item driver(Curses::REQ_LEFT_ITEM) end
next_item()
click to toggle source
# File lib/curses.rb, line 67 def next_item driver(Curses::REQ_NEXT_ITEM) end
next_match()
click to toggle source
# File lib/curses.rb, line 87 def next_match driver(Curses::REQ_NEXT_MATCH) end
post
click to toggle source
Post the menu.
static VALUE
menu_post(VALUE obj)
{
struct menudata *menup;
int error;
GetMENU(obj, menup);
error = post_menu(menup->menu);
check_curses_error(error);
return obj;
}
prev_item()
click to toggle source
# File lib/curses.rb, line 71 def prev_item driver(Curses::REQ_PREV_ITEM) end
prev_match()
click to toggle source
# File lib/curses.rb, line 91 def prev_match driver(Curses::REQ_PREV_MATCH) end
right_item()
click to toggle source
# File lib/curses.rb, line 31 def right_item driver(Curses::REQ_RIGHT_ITEM) end
scroll_down_line()
click to toggle source
# File lib/curses.rb, line 47 def scroll_down_line driver(Curses::REQ_SCR_DLINE) end
scroll_down_page()
click to toggle source
# File lib/curses.rb, line 55 def scroll_down_page driver(Curses::REQ_SCR_DPAGE) end
scroll_up_line()
click to toggle source
# File lib/curses.rb, line 43 def scroll_up_line driver(Curses::REQ_SCR_ULINE) end
scroll_up_page()
click to toggle source
# File lib/curses.rb, line 51 def scroll_up_page driver(Curses::REQ_SCR_UPAGE) end
toggle_item()
click to toggle source
# File lib/curses.rb, line 75 def toggle_item driver(Curses::REQ_TOGGLE_ITEM) end
unpost
click to toggle source
Unpost the menu.
static VALUE
menu_unpost(VALUE obj)
{
struct menudata *menup;
int error;
GetMENU(obj, menup);
error = unpost_menu(menup->menu);
check_curses_error(error);
return obj;
}
up_item()
click to toggle source
# File lib/curses.rb, line 35 def up_item driver(Curses::REQ_UP_ITEM) end