Class: Curses::Menu
- Inherits:
-
Object
- Object
- Curses::Menu
- Defined in:
- ext/curses/curses.c,
lib/curses.rb
Instance Method Summary collapse
- #back_pattern ⇒ Object
- #clear_pattern ⇒ Object
-
#current_item ⇒ Object
call-seq: current_item.
-
#current_item=(item) ⇒ Object
call-seq: current_item=(item).
- #down_item ⇒ Object
-
#driver(command) ⇒ Object
call-seq: driver(command).
- #first_item ⇒ Object
-
#format ⇒ Object
call-seq: format.
-
#initialize(items) ⇒ Object
constructor
call-seq: new(items).
-
#item_count ⇒ Object
call-seq: item_count.
-
#items ⇒ Object
call-seq: items.
-
#items=(items) ⇒ Object
call-seq: items=(items).
- #last_item ⇒ Object
- #left_item ⇒ Object
- #next_item ⇒ Object
- #next_match ⇒ Object
-
#opts(opts) ⇒ Object
call-seq: opts.
-
#opts_off(opts) ⇒ Object
call-seq: opts_off(opts).
-
#opts_on(opts) ⇒ Object
call-seq: opts_on(opts).
-
#post ⇒ Object
call-seq: post.
- #prev_item ⇒ Object
- #prev_match ⇒ Object
- #right_item ⇒ Object
-
#scale ⇒ Object
call-seq: scale.
- #scroll_down_line ⇒ Object
- #scroll_down_page ⇒ Object
- #scroll_up_line ⇒ Object
- #scroll_up_page ⇒ Object
-
#set_format(rows, cols) ⇒ Object
call-seq: set_format(rows, cols).
-
#set_opts(opts) ⇒ Object
call-seq: set_opts(opts).
-
#set_sub(win) ⇒ Object
call-seq: set_sub=(win).
-
#set_win(win) ⇒ Object
call-seq: set_win=(win).
- #toggle_item ⇒ Object
-
#unpost ⇒ Object
call-seq: unpost.
- #up_item ⇒ Object
Constructor Details
#initialize(items) ⇒ Object
call-seq:
new(items)
Construct a new Curses::Menu.
3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 |
# File 'ext/curses/curses.c', line 3317
static VALUE
menu_initialize(VALUE obj, VALUE items)
{
struct menudata *menup;
ITEM **menu_items;
int i;
ID id_new;
Check_Type(items, T_ARRAY);
curses_init_screen(Qnil);
TypedData_Get_Struct(obj, struct menudata, &menudata_type, menup);
if (menup->menu) {
rb_raise(rb_eRuntimeError, "already initialized menu");
}
menup->items = rb_ary_new();
menu_items = ALLOC_N(ITEM *, RARRAY_LEN(items) + 1);
CONST_ID(id_new, "new");
for (i = 0; i < RARRAY_LEN(items); i++) {
VALUE item = RARRAY_AREF(items, i);
struct itemdata *itemp;
if (RB_TYPE_P(item, T_ARRAY)) {
item = rb_apply(cItem, id_new, item);
}
GetITEM(item, itemp);
menu_items[i] = itemp->item;
rb_ary_push(menup->items, item);
}
menu_items[RARRAY_LEN(items)] = NULL;
menup->menu = new_menu(menu_items);
if (menup->menu == NULL) {
check_curses_error(errno);
}
return obj;
}
|
Instance Method Details
#back_pattern ⇒ Object
76 77 78 |
# File 'lib/curses.rb', line 76 def back_pattern driver(Curses::REQ_BACK_PATTERN) end |
#clear_pattern ⇒ Object
72 73 74 |
# File 'lib/curses.rb', line 72 def clear_pattern driver(Curses::REQ_CLEAR_PATTERN) end |
#current_item ⇒ Object
call-seq:
current_item
Returns the current item.
3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 |
# File 'ext/curses/curses.c', line 3507
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) ⇒ Object
call-seq:
current_item=(item)
Sets the current item.
3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 |
# File 'ext/curses/curses.c', line 3529
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 ⇒ Object
32 33 34 |
# File 'lib/curses.rb', line 32 def down_item driver(Curses::REQ_DOWN_ITEM) end |
#driver(command) ⇒ Object
call-seq:
driver(command)
Perform the command on the menu.
3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 |
# File 'ext/curses/curses.c', line 3404
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 ⇒ Object
52 53 54 |
# File 'lib/curses.rb', line 52 def first_item driver(Curses::REQ_FIRST_ITEM) end |
#format ⇒ Object
call-seq:
format
Get the maximum size of the menu.
3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 |
# File 'ext/curses/curses.c', line 3629
static VALUE
menu_format_m(VALUE obj)
{
struct menudata *menup;
int rows, cols;
GetMENU(obj, menup);
menu_format(menup->menu, &rows, &cols);
return rb_assoc_new(INT2NUM(rows), INT2NUM(cols));
}
|
#item_count ⇒ Object
call-seq:
item_count
Returns the count of items in the menu.
3425 3426 3427 3428 3429 3430 3431 3432 |
# File 'ext/curses/curses.c', line 3425
static VALUE
menu_item_count(VALUE obj)
{
struct menudata *menup;
GetMENU(obj, menup);
return INT2NUM(item_count(menup->menu));
}
|
#items ⇒ Object
call-seq:
items
Returns the items of the menu.
3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 |
# File 'ext/curses/curses.c', line 3442
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) ⇒ Object
call-seq:
items=(items)
Returns the items of the menu.
3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 |
# File 'ext/curses/curses.c', line 3471
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 ⇒ Object
56 57 58 |
# File 'lib/curses.rb', line 56 def last_item driver(Curses::REQ_LAST_ITEM) end |
#left_item ⇒ Object
20 21 22 |
# File 'lib/curses.rb', line 20 def left_item driver(Curses::REQ_LEFT_ITEM) end |
#next_item ⇒ Object
60 61 62 |
# File 'lib/curses.rb', line 60 def next_item driver(Curses::REQ_NEXT_ITEM) end |
#next_match ⇒ Object
80 81 82 |
# File 'lib/curses.rb', line 80 def next_match driver(Curses::REQ_NEXT_MATCH) end |
#opts(opts) ⇒ Object
call-seq:
opts
Get the current option bits of the menu.
3708 3709 3710 3711 3712 3713 3714 3715 |
# File 'ext/curses/curses.c', line 3708
static VALUE
menu_opts_m(VALUE obj, VALUE opts)
{
struct menudata *menup;
GetMENU(obj, menup);
return INT2NUM(menu_opts(menup->menu));
}
|
#opts_off(opts) ⇒ Object
call-seq:
opts_off(opts)
Turn off the option bits of the menu.
3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 |
# File 'ext/curses/curses.c', line 3688
static VALUE
menu_opts_off_m(VALUE obj, VALUE opts)
{
struct menudata *menup;
int error;
GetMENU(obj, menup);
error = menu_opts_off(menup->menu, NUM2INT(opts));
check_curses_error(error);
return obj;
}
|
#opts_on(opts) ⇒ Object
call-seq:
opts_on(opts)
Turn on the option bits of the menu.
3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 |
# File 'ext/curses/curses.c', line 3668
static VALUE
menu_opts_on_m(VALUE obj, VALUE opts)
{
struct menudata *menup;
int error;
GetMENU(obj, menup);
error = menu_opts_on(menup->menu, NUM2INT(opts));
check_curses_error(error);
return obj;
}
|
#post ⇒ Object
call-seq:
post
Post the menu.
3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 |
# File 'ext/curses/curses.c', line 3362
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 ⇒ Object
64 65 66 |
# File 'lib/curses.rb', line 64 def prev_item driver(Curses::REQ_PREV_ITEM) end |
#prev_match ⇒ Object
84 85 86 |
# File 'lib/curses.rb', line 84 def prev_match driver(Curses::REQ_PREV_MATCH) end |
#right_item ⇒ Object
24 25 26 |
# File 'lib/curses.rb', line 24 def right_item driver(Curses::REQ_RIGHT_ITEM) end |
#scale ⇒ Object
call-seq:
scale
Return the minimum rows and columns required for the subwindow of the menu.
3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 |
# File 'ext/curses/curses.c', line 3589
static VALUE
menu_scale(VALUE obj)
{
struct menudata *menup;
int error, rows, columns;
GetMENU(obj, menup);
error = scale_menu(menup->menu, &rows, &columns);
check_curses_error(error);
return rb_assoc_new(INT2NUM(rows), INT2NUM(columns));
}
|
#scroll_down_line ⇒ Object
40 41 42 |
# File 'lib/curses.rb', line 40 def scroll_down_line driver(Curses::REQ_SCR_DLINE) end |
#scroll_down_page ⇒ Object
48 49 50 |
# File 'lib/curses.rb', line 48 def scroll_down_page driver(Curses::REQ_SCR_DPAGE) end |
#scroll_up_line ⇒ Object
36 37 38 |
# File 'lib/curses.rb', line 36 def scroll_up_line driver(Curses::REQ_SCR_ULINE) end |
#scroll_up_page ⇒ Object
44 45 46 |
# File 'lib/curses.rb', line 44 def scroll_up_page driver(Curses::REQ_SCR_UPAGE) end |
#set_format(rows, cols) ⇒ Object
call-seq:
set_format(rows, cols)
Set the maximum size of the menu.
3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 |
# File 'ext/curses/curses.c', line 3609
static VALUE
menu_set_format(VALUE obj, VALUE rows, VALUE cols)
{
struct menudata *menup;
int error;
GetMENU(obj, menup);
error = set_menu_format(menup->menu, NUM2INT(rows), NUM2INT(cols));
check_curses_error(error);
return obj;
}
|
#set_opts(opts) ⇒ Object
call-seq:
set_opts(opts)
Set the option bits of the menu.
3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 |
# File 'ext/curses/curses.c', line 3648
static VALUE
menu_set_opts(VALUE obj, VALUE opts)
{
struct menudata *menup;
int error;
GetMENU(obj, menup);
error = set_menu_opts(menup->menu, NUM2INT(opts));
check_curses_error(error);
return obj;
}
|
#set_sub(win) ⇒ Object
call-seq:
set_sub=(win)
Set the subwindow of the menu.
3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 |
# File 'ext/curses/curses.c', line 3569
static VALUE
menu_set_sub(VALUE obj, VALUE win)
{
struct menudata *menup;
struct windata *winp;
GetMENU(obj, menup);
GetWINDOW(win, winp);
set_menu_sub(menup->menu, winp->window);
return win;
}
|
#set_win(win) ⇒ Object
call-seq:
set_win=(win)
Set the window of the menu.
3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 |
# File 'ext/curses/curses.c', line 3549
static VALUE
menu_set_win(VALUE obj, VALUE win)
{
struct menudata *menup;
struct windata *winp;
GetMENU(obj, menup);
GetWINDOW(win, winp);
set_menu_win(menup->menu, winp->window);
return win;
}
|
#toggle_item ⇒ Object
68 69 70 |
# File 'lib/curses.rb', line 68 def toggle_item driver(Curses::REQ_TOGGLE_ITEM) end |
#unpost ⇒ Object
call-seq:
unpost
Unpost the menu.
3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 |
# File 'ext/curses/curses.c', line 3383
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 ⇒ Object
28 29 30 |
# File 'lib/curses.rb', line 28 def up_item driver(Curses::REQ_UP_ITEM) end |