Module: Curses

Defined in:
ext/curses/curses.c,
ext/curses/curses.c,
lib/curses.rb

Overview

Description

An implementation of the CRT screen handling and optimization library.

Structures and such

Classes

  • Curses::Window - class with the means to draw a window or box
  • Curses::MouseEvent - class for collecting mouse events

Modules

Curses

The curses implementation

Curses::Key:: Collection of constants for keypress events

Examples

  • hello.rb :include: ../../sample/hello.rb

  • rain.rb :include: ../../sample/rain.rb

Defined Under Namespace

Modules: Key Classes: Error, Field, Form, Item, Menu, MouseEvent, Pad, Screen, Window

Constant Summary collapse

VERSION =

Identifies curses library version.

  • "ncurses 5.9.20110404"
  • "PDCurses 3.4 - Public Domain 2008"
  • "curses (SVR4)" (System V curses)
  • "curses (unknown)" (The original BSD curses? NetBSD maybe.)
version
TYPE_ALPHA =
INT2NUM(TYPE_CODE_ALPHA)
TYPE_ALNUM =
INT2NUM(TYPE_CODE_ALNUM)
TYPE_ENUM =
INT2NUM(TYPE_CODE_ENUM)
TYPE_INTEGER =
INT2NUM(TYPE_CODE_INTEGER)
TYPE_NUMERIC =
INT2NUM(TYPE_CODE_NUMERIC)
TYPE_REGEXP =
INT2NUM(TYPE_CODE_REGEXP)

Class Method Summary collapse

Class Method Details

.addch(ch) ⇒ Object



793
794
795
796
797
798
799
# File 'ext/curses/curses.c', line 793

static VALUE
curses_addch(VALUE obj, VALUE ch)
{
    curses_stdscr();
    addch(OBJ2CHTYPE(ch));
    return Qnil;
}

.addstr(str) ⇒ Object



823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
# File 'ext/curses/curses.c', line 823

static VALUE
curses_addstr(VALUE obj, VALUE str)
{
    StringValue(str);
#if defined(HAVE_ADDNWSTR) && defined(_WIN32)
    str = rb_str_export_to_enc(str, get_wide_encoding());
    curses_stdscr();
    if (!NIL_P(str)) {
	addnwstr((wchar_t *)RSTRING_PTR(str), RSTRING_LEN(str) / sizeof(wchar_t));
    }
#else
    str = rb_str_export_to_enc(str, terminal_encoding);
    curses_stdscr();
    if (!NIL_P(str)) {
	addstr(StringValueCStr(str));
    }
#endif
    return Qnil;
}

.assume_default_colors(fg, bg) ⇒ Object



1191
1192
1193
1194
1195
1196
1197
# File 'ext/curses/curses.c', line 1191

static VALUE
curses_assume_default_colors(VALUE obj, VALUE fg, VALUE bg)
{
    curses_stdscr();
    assume_default_colors(NUM2INT(fg), NUM2INT(bg));
    return Qnil;
}

.attroff(attrs) ⇒ Object



1081
1082
1083
1084
1085
1086
1087
# File 'ext/curses/curses.c', line 1081

static VALUE
curses_attroff(VALUE obj, VALUE attrs)
{
    curses_stdscr();
    return window_attroff(rb_stdscr,attrs);
    /* return INT2FIX(attroff(NUM2INT(attrs))); */
}

.attron(attrs) ⇒ Object



1098
1099
1100
1101
1102
1103
1104
# File 'ext/curses/curses.c', line 1098

static VALUE
curses_attron(VALUE obj, VALUE attrs)
{
    curses_stdscr();
    return window_attron(rb_stdscr,attrs);
    /* return INT2FIX(attroff(NUM2INT(attrs))); */
}

.attrset(attrs) ⇒ Object



1115
1116
1117
1118
1119
1120
1121
# File 'ext/curses/curses.c', line 1115

static VALUE
curses_attrset(VALUE obj, VALUE attrs)
{
    curses_stdscr();
    return window_attrset(rb_stdscr,attrs);
    /* return INT2FIX(attroff(NUM2INT(attrs))); */
}

.beepObject



652
653
654
655
656
657
658
659
660
# File 'ext/curses/curses.c', line 652

static VALUE
curses_beep(VALUE obj)
{
#ifdef HAVE_BEEP
    curses_stdscr();
    beep();
#endif
    return Qnil;
}

.bkgd(ch) ⇒ Object



1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
# File 'ext/curses/curses.c', line 1157

static VALUE
curses_bkgd(VALUE obj, VALUE ch)
{
#ifdef HAVE_BKGD
    curses_stdscr();
    return (bkgd(OBJ2CHTYPE(ch)) == OK) ? Qtrue : Qfalse;
#else
    return Qfalse;
#endif
}

.bkgdset(ch) ⇒ Object



1136
1137
1138
1139
1140
1141
1142
1143
1144
# File 'ext/curses/curses.c', line 1136

static VALUE
curses_bkgdset(VALUE obj, VALUE ch)
{
#ifdef HAVE_BKGDSET
    curses_stdscr();
    bkgdset(OBJ2CHTYPE(ch));
#endif
    return Qnil;
}

.can_change_color?Object



1378
1379
1380
1381
1382
1383
# File 'ext/curses/curses.c', line 1378

static VALUE
curses_can_change_color(VALUE obj)
{
    curses_stdscr();
    return can_change_color() ? Qtrue : Qfalse;
}

.cbreakObject



569
570
571
572
573
574
575
# File 'ext/curses/curses.c', line 569

static VALUE
curses_cbreak(VALUE obj)
{
    curses_stdscr();
    cbreak();
    return Qnil;
}

.chgatObject



93
94
95
# File 'lib/curses.rb', line 93

def chgat(...)
  Curses.stdscr.chgat(...)
end

.clearObject



410
411
412
413
414
415
416
# File 'ext/curses/curses.c', line 410

static VALUE
curses_clear(VALUE obj)
{
    curses_stdscr();
    wclear(stdscr);
    return Qnil;
}

.close_screenObject



350
351
352
353
354
355
356
357
358
359
360
# File 'ext/curses/curses.c', line 350

static VALUE
curses_close_screen(VALUE self)
{
    curses_stdscr();
#ifdef HAVE_ISENDWIN
    if (!isendwin())
#endif
	endwin();
    rb_stdscr = 0;
    return Qnil;
}

.closed?Object



390
391
392
393
394
395
396
397
398
# File 'ext/curses/curses.c', line 390

static VALUE
curses_closed(VALUE self)
{
    curses_stdscr();
    if (isendwin()) {
	return Qtrue;
    }
    return Qfalse;
}

.clrtoeolObject



440
441
442
443
444
445
446
# File 'ext/curses/curses.c', line 440

static VALUE
curses_clrtoeol(VALUE self)
{
    curses_stdscr();
    clrtoeol();
    return Qnil;
}

.color_content(color) ⇒ Object



1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
# File 'ext/curses/curses.c', line 1406

static VALUE
curses_color_content(VALUE obj, VALUE color)
{
    curses_stdscr();
#ifdef HAVE_EXTENDED_COLOR_CONTENT
    {
	int r, g, b;
	if (extended_color_content(NUM2INT(color), &r, &g, &b) == ERR)
	    return Qnil;
	return rb_ary_new3(3, INT2FIX(r), INT2FIX(g), INT2FIX(b));
    }
#else
    {
	short r, g, b;
	if (color_content(NUM2INT(color), &r, &g, &b) == ERR)
	    return Qnil;
	return rb_ary_new3(3, INT2FIX(r), INT2FIX(g), INT2FIX(b));
    }
#endif
}

.color_pair(attrs) ⇒ Object



1481
1482
1483
1484
1485
# File 'ext/curses/curses.c', line 1481

static VALUE
curses_color_pair(VALUE obj, VALUE attrs)
{
    return CHTYPE2NUM(COLOR_PAIR(NUM2CHTYPE(attrs)));
}

.color_pairsObject



1434
1435
1436
1437
1438
# File 'ext/curses/curses.c', line 1434

static VALUE
curses_color_pairs(VALUE obj)
{
    return INT2FIX(COLOR_PAIRS);
}

.colorsObject



1391
1392
1393
1394
1395
# File 'ext/curses/curses.c', line 1391

static VALUE
curses_colors(VALUE obj)
{
    return INT2FIX(COLORS);
}

.colsObject



994
995
996
997
998
# File 'ext/curses/curses.c', line 994

static VALUE
curses_cols(VALUE self)
{
    return INT2FIX(COLS);
}

.crmodeObject



569
570
571
572
573
574
575
# File 'ext/curses/curses.c', line 569

static VALUE
curses_cbreak(VALUE obj)
{
    curses_stdscr();
    cbreak();
    return Qnil;
}

.curs_set(visibility) ⇒ Object



1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
# File 'ext/curses/curses.c', line 1009

static VALUE
curses_curs_set(VALUE obj, VALUE visibility)
{
#ifdef HAVE_CURS_SET
    int n;
    curses_stdscr();
    return (n = curs_set(NUM2INT(visibility)) != ERR) ? INT2FIX(n) : Qnil;
#else
    return Qnil;
#endif
}

.def_prog_modeObject



1730
1731
1732
1733
1734
1735
# File 'ext/curses/curses.c', line 1730

static VALUE
curses_def_prog_mode(VALUE obj)
{
    curses_stdscr();
    return def_prog_mode() == OK ? Qtrue : Qfalse;
}

.delchObject



912
913
914
915
916
917
918
# File 'ext/curses/curses.c', line 912

static VALUE
curses_delch(VALUE obj)
{
    curses_stdscr();
    delch();
    return Qnil;
}

.deletelnObject



926
927
928
929
930
931
932
933
934
# File 'ext/curses/curses.c', line 926

static VALUE
curses_deleteln(VALUE obj)
{
    curses_stdscr();
#if defined(HAVE_DELETELN) || defined(deleteln)
    deleteln();
#endif
    return Qnil;
}

.doupdateObject



470
471
472
473
474
475
476
477
478
479
480
# File 'ext/curses/curses.c', line 470

static VALUE
curses_doupdate(VALUE obj)
{
    curses_stdscr();
#ifdef HAVE_DOUPDATE
    doupdate();
#else
    refresh();
#endif
    return Qnil;
}

.echoObject



488
489
490
491
492
493
494
# File 'ext/curses/curses.c', line 488

static VALUE
curses_echo(VALUE obj)
{
    curses_stdscr();
    echo();
    return Qnil;
}

.eraseObject



424
425
426
427
428
429
430
# File 'ext/curses/curses.c', line 424

static VALUE
curses_erase(VALUE obj)
{
    curses_stdscr();
    werase(stdscr);
    return Qnil;
}

.ESCDELAYObject



1253
1254
1255
1256
1257
# File 'ext/curses/curses.c', line 1253

static VALUE
curses_escdelay_get(VALUE obj)
{
    return INT2NUM(ESCDELAY);
}

.ESCDELAY=(val) ⇒ Object



1238
1239
1240
1241
1242
1243
# File 'ext/curses/curses.c', line 1238

static VALUE
curses_escdelay_set(VALUE obj, VALUE val)
{
    ESCDELAY = NUM2INT(val);
    return INT2NUM(ESCDELAY);
}

.flashObject



670
671
672
673
674
675
676
677
678
# File 'ext/curses/curses.c', line 670

static VALUE
curses_flash(VALUE obj)
{
#ifdef HAVE_FLASH
    curses_stdscr();
    flash();
#endif
    return Qnil;
}

.flushinpObject



636
637
638
639
640
641
642
# File 'ext/curses/curses.c', line 636

static VALUE
curses_flushinp(VALUE obj)
{
    curses_stdscr();
    flushinp();
    return Qnil;
}

.get_charObject



4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
# File 'ext/curses/curses.c', line 4944

static VALUE
curses_get_char(VALUE obj)
{
#ifdef HAVE_GET_WCH
    struct get_wch_arg arg;

    curses_stdscr();
    rb_thread_call_without_gvl(get_wch_func, &arg, RUBY_UBF_IO, 0);
    switch (arg.retval) {
    case OK:
	return keyboard_uint_chr(arg.ch);
    case KEY_CODE_YES:
	return key_code_value(arg.ch);
    }
    return Qnil;
#else
    int c;

    curses_stdscr();
    rb_thread_call_without_gvl(getch_func, &c, RUBY_UBF_IO, 0);
    if (c > 0xff) {
	return INT2NUM(c);
    }
    else if (c >= 0) {
	return keyboard_uint_chr(c);
    }
    else {
	return Qnil;
    }
#endif
}

.get_key_modifiersObject



5041
5042
5043
5044
5045
# File 'ext/curses/curses.c', line 5041

static VALUE
curses_get_key_modifiers(VALUE obj)
{
    return ULONG2NUM(PDC_get_key_modifiers());
}

.getchObject



859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
# File 'ext/curses/curses.c', line 859

static VALUE
curses_getch(VALUE obj)
{
    int c;

    curses_stdscr();
    rb_thread_call_without_gvl(getch_func, &c, RUBY_UBF_IO, 0);
    if (c == EOF) return Qnil;
    if (rb_isprint(c)) {
	char ch = (char)c;

	return rb_external_str_new_with_enc(&ch, 1, keyboard_encoding);
    }
    return UINT2NUM(c);
}

.getmouseObject



1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
# File 'ext/curses/curses.c', line 1585

static VALUE
curses_getmouse(VALUE obj)
{
    struct mousedata *mdata;
    VALUE val;

    curses_stdscr();
    val = TypedData_Make_Struct(cMouseEvent,struct mousedata,
				&mousedata_type,mdata);
    mdata->mevent = (MEVENT*)xmalloc(sizeof(MEVENT));
    return (getmouse(mdata->mevent) == OK) ? val : Qnil;
}

.getstrObject



896
897
898
899
900
901
902
903
904
# File 'ext/curses/curses.c', line 896

static VALUE
curses_getstr(VALUE obj)
{
    char rtn[GETSTR_BUF_SIZE];

    curses_stdscr();
    rb_thread_call_without_gvl(getstr_func, rtn, RUBY_UBF_IO, 0);
    return rb_external_str_new_with_enc(rtn, strlen(rtn), keyboard_encoding);
}

.has_colors?Object



1366
1367
1368
1369
1370
1371
# File 'ext/curses/curses.c', line 1366

static VALUE
curses_has_colors(VALUE obj)
{
    curses_stdscr();
    return has_colors() ? Qtrue : Qfalse;
}

.inchObject



778
779
780
781
782
783
# File 'ext/curses/curses.c', line 778

static VALUE
curses_inch(VALUE obj)
{
    curses_stdscr();
    return CHTYPE2NUM(inch());
}

.init_color(color, r, g, b) ⇒ Object



1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
# File 'ext/curses/curses.c', line 1347

static VALUE
curses_init_color(VALUE obj, VALUE color, VALUE r, VALUE g, VALUE b)
{
    /* may have to raise exception on ERR */
    curses_stdscr();
#ifdef HAVE_INIT_EXTENDED_COLOR
    return (init_extended_color(NUM2INT(color), NUM2INT(r),
				NUM2INT(g), NUM2INT(b)) == OK) ? Qtrue : Qfalse;
#else
    return (init_color(NUM2INT(color),NUM2INT(r),
		       NUM2INT(g),NUM2INT(b)) == OK) ? Qtrue : Qfalse;
#endif
}

.init_pair(pair, f, b) ⇒ Object



1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
# File 'ext/curses/curses.c', line 1319

static VALUE
curses_init_pair(VALUE obj, VALUE pair, VALUE f, VALUE b)
{
    /* may have to raise exception on ERR */
    curses_stdscr();
#ifdef HAVE_INIT_EXTENDED_PAIR
    return (init_extended_pair(NUM2INT(pair), NUM2INT(f), NUM2INT(b)) == OK) ? Qtrue : Qfalse;
#else
    return (init_pair(NUM2INT(pair),NUM2INT(f),NUM2INT(b)) == OK) ? Qtrue : Qfalse;
#endif
}

.init_screenObject



311
312
313
314
315
316
317
318
319
320
321
322
323
# File 'ext/curses/curses.c', line 311

static VALUE
curses_init_screen(VALUE self)
{
    if (rb_stdscr) return rb_stdscr;
    initscr();
    if (stdscr == 0) {
	rb_raise(rb_eRuntimeError, "can't initialize curses");
    }
    rb_set_end_proc(curses_finalize, 0);
    clear();
    rb_stdscr = prep_window(cWindow, stdscr, 1);
    return rb_stdscr;
}

.insch(ch) ⇒ Object



808
809
810
811
812
813
814
# File 'ext/curses/curses.c', line 808

static VALUE
curses_insch(VALUE obj, VALUE ch)
{
    curses_stdscr();
    insch(OBJ2CHTYPE(ch));
    return Qnil;
}

.insertlnObject



942
943
944
945
946
947
948
949
950
# File 'ext/curses/curses.c', line 942

static VALUE
curses_insertln(VALUE obj)
{
    curses_stdscr();
#if defined(HAVE_INSERTLN) || defined(insertln)
    insertln();
#endif
    return Qnil;
}

.keyboard_encodingObject



4820
4821
4822
4823
4824
# File 'ext/curses/curses.c', line 4820

static VALUE
curses_get_keyboard_encoding(VALUE obj)
{
    return rb_enc_from_encoding(keyboard_encoding);
}

.keyboard_encoding=(enc) ⇒ Object



4832
4833
4834
4835
4836
4837
# File 'ext/curses/curses.c', line 4832

static VALUE
curses_set_keyboard_encoding(VALUE obj, VALUE enc)
{
    keyboard_encoding = rb_to_encoding(enc);
    return enc;
}

.keyname(c) ⇒ Object



958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
# File 'ext/curses/curses.c', line 958

static VALUE
curses_keyname(VALUE obj, VALUE c)
{
#ifdef HAVE_KEYNAME
    int cc = curses_char(c);
    const char *name;

    curses_stdscr();
    name = keyname(cc);
    if (name) {
	return rb_str_new_cstr(name);
    }
    else {
	return Qnil;
    }
#else
    return Qnil;
#endif
}

.linesObject



983
984
985
986
987
# File 'ext/curses/curses.c', line 983

static VALUE
curses_lines(VALUE self)
{
    return INT2FIX(LINES);
}

.mouseinterval(interval) ⇒ Object



1632
1633
1634
1635
1636
1637
# File 'ext/curses/curses.c', line 1632

static VALUE
curses_mouseinterval(VALUE obj, VALUE interval)
{
    curses_stdscr();
    return mouseinterval(NUM2INT(interval)) ? Qtrue : Qfalse;
}

.mousemask(mask) ⇒ Object



1645
1646
1647
1648
1649
1650
# File 'ext/curses/curses.c', line 1645

static VALUE
curses_mousemask(VALUE obj, VALUE mask)
{
    curses_stdscr();
    return ULONG2NUM(mousemask(NUM2UINT(mask),NULL));
}

.nlObject



606
607
608
609
610
611
612
# File 'ext/curses/curses.c', line 606

static VALUE
curses_nl(VALUE obj)
{
    curses_stdscr();
    nl();
    return Qnil;
}

.nocbreakObject



584
585
586
587
588
589
590
# File 'ext/curses/curses.c', line 584

static VALUE
curses_nocbreak(VALUE obj)
{
    curses_stdscr();
    nocbreak();
    return Qnil;
}

.nocrmodeObject



584
585
586
587
588
589
590
# File 'ext/curses/curses.c', line 584

static VALUE
curses_nocbreak(VALUE obj)
{
    curses_stdscr();
    nocbreak();
    return Qnil;
}

.noechoObject



502
503
504
505
506
507
508
# File 'ext/curses/curses.c', line 502

static VALUE
curses_noecho(VALUE obj)
{
    curses_stdscr();
    noecho();
    return Qnil;
}

.nonlObject



622
623
624
625
626
627
628
# File 'ext/curses/curses.c', line 622

static VALUE
curses_nonl(VALUE obj)
{
    curses_stdscr();
    nonl();
    return Qnil;
}

.norawObject



539
540
541
542
543
544
545
# File 'ext/curses/curses.c', line 539

static VALUE
curses_noraw(VALUE obj)
{
    curses_stdscr();
    noraw();
    return Qnil;
}

.pair_content(pair) ⇒ Object



1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
# File 'ext/curses/curses.c', line 1450

static VALUE
curses_pair_content(VALUE obj, VALUE pair)
{
    curses_stdscr();
#ifdef HAVE_EXTENDED_PAIR_CONTENT
    {
	int f, b;
	if (extended_pair_content(NUM2INT(pair), &f, &b) == ERR)
	    return Qnil;
	return rb_ary_new3(2, INT2FIX(f), INT2FIX(b));
    }
#else
    {
	short f, b;
	if (pair_content(NUM2INT(pair), &f, &b) == ERR)
	    return Qnil;
	return rb_ary_new3(2, INT2FIX(f), INT2FIX(b));
    }
#endif
}

.pair_number(attrs) ⇒ Object



1493
1494
1495
1496
1497
1498
# File 'ext/curses/curses.c', line 1493

static VALUE
curses_pair_number(VALUE obj, VALUE attrs)
{
    curses_stdscr();
    return INT2FIX(PAIR_NUMBER(NUM2CHTYPE(attrs)));
}

.rawObject



524
525
526
527
528
529
530
# File 'ext/curses/curses.c', line 524

static VALUE
curses_raw(VALUE obj)
{
    curses_stdscr();
    raw();
    return Qnil;
}

.refreshObject



454
455
456
457
458
459
460
# File 'ext/curses/curses.c', line 454

static VALUE
curses_refresh(VALUE obj)
{
    curses_stdscr();
    refresh();
    return Qnil;
}

.reset_color_pairsObject



1524
1525
1526
1527
1528
1529
1530
# File 'ext/curses/curses.c', line 1524

static VALUE
curses_reset_color_pairs(VALUE obj)
{
    curses_stdscr();
    reset_color_pairs();
    return Qnil;
}

.reset_prog_modeObject



1749
1750
1751
1752
1753
1754
# File 'ext/curses/curses.c', line 1749

static VALUE
curses_reset_prog_mode(VALUE obj)
{
    curses_stdscr();
    return reset_prog_mode() == OK ? Qtrue : Qfalse;
}

.resize(lin, col) ⇒ Object



1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
# File 'ext/curses/curses.c', line 1277

static VALUE
curses_resizeterm(VALUE obj, VALUE lin, VALUE col)
{
#if defined(HAVE_RESIZETERM)
    curses_stdscr();
    return (resizeterm(NUM2INT(lin),NUM2INT(col)) == OK) ? Qtrue : Qfalse;
#else
    return Qnil;
#endif
}

.resizeterm(lin, col) ⇒ Object



1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
# File 'ext/curses/curses.c', line 1277

static VALUE
curses_resizeterm(VALUE obj, VALUE lin, VALUE col)
{
#if defined(HAVE_RESIZETERM)
    curses_stdscr();
    return (resizeterm(NUM2INT(lin),NUM2INT(col)) == OK) ? Qtrue : Qfalse;
#else
    return Qnil;
#endif
}

.return_key_modifiers(flag) ⇒ Object



5047
5048
5049
5050
5051
# File 'ext/curses/curses.c', line 5047

static VALUE
curses_return_key_modifiers(VALUE obj, VALUE flag)
{
    return INT2NUM(PDC_return_key_modifiers(RTEST(flag)));
}

.save_key_modifiers(flag) ⇒ Object



5053
5054
5055
5056
5057
# File 'ext/curses/curses.c', line 5053

static VALUE
curses_save_key_modifiers(VALUE obj, VALUE flag)
{
    return INT2NUM(PDC_save_key_modifiers(RTEST(flag)));
}

.scrl(n) ⇒ Object



1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
# File 'ext/curses/curses.c', line 1033

static VALUE
curses_scrl(VALUE obj, VALUE n)
{
    /* may have to raise exception on ERR */
#ifdef HAVE_SCRL
    curses_stdscr();
    return (scrl(NUM2INT(n)) == OK) ? Qtrue : Qfalse;
#else
    return Qfalse;
#endif
}

.setpos(y, x) ⇒ Object



731
732
733
734
735
736
737
# File 'ext/curses/curses.c', line 731

static VALUE
curses_setpos(VALUE obj, VALUE y, VALUE x)
{
    curses_stdscr();
    move(NUM2INT(y), NUM2INT(x));
    return Qnil;
}

.setscrreg(top, bottom) ⇒ Object



1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
# File 'ext/curses/curses.c', line 1060

static VALUE
curses_setscrreg(VALUE obj, VALUE top, VALUE bottom)
{
    /* may have to raise exception on ERR */
#ifdef HAVE_SETSCRREG
    curses_stdscr();
    return (setscrreg(NUM2INT(top), NUM2INT(bottom)) == OK) ? Qtrue : Qfalse;
#else
    return Qfalse;
#endif
}

.standendObject



765
766
767
768
769
770
771
# File 'ext/curses/curses.c', line 765

static VALUE
curses_standend(VALUE obj)
{
    curses_stdscr();
    standend();
    return Qnil;
}

.standoutObject



748
749
750
751
752
753
754
# File 'ext/curses/curses.c', line 748

static VALUE
curses_standout(VALUE obj)
{
    curses_stdscr();
    standout();
    return Qnil;
}

.start_colorObject



1297
1298
1299
1300
1301
1302
1303
# File 'ext/curses/curses.c', line 1297

static VALUE
curses_start_color(VALUE obj)
{
    /* may have to raise exception on ERR */
    curses_stdscr();
    return (start_color() == OK) ? Qtrue : Qfalse;
}

.stdscrObject



311
312
313
314
315
316
317
318
319
320
321
322
323
# File 'ext/curses/curses.c', line 311

static VALUE
curses_init_screen(VALUE self)
{
    if (rb_stdscr) return rb_stdscr;
    initscr();
    if (stdscr == 0) {
	rb_raise(rb_eRuntimeError, "can't initialize curses");
    }
    rb_set_end_proc(curses_finalize, 0);
    clear();
    rb_stdscr = prep_window(cWindow, stdscr, 1);
    return rb_stdscr;
}

.support_extended_colors?Object



1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
# File 'ext/curses/curses.c', line 1507

static VALUE
curses_support_extended_colors(VALUE obj)
{
#if defined(HAVE_INIT_EXTENDED_PAIR) && defined(HAVE_INIT_EXTENDED_COLOR) && \
    defined(HAVE_EXTENDED_COLOR_CONTENT) && defined(HAVE_EXTENDED_PAIR_CONTENT)
    return Qtrue;
#else
    return Qfalse;
#endif
}

.TABSIZEObject



1223
1224
1225
1226
1227
# File 'ext/curses/curses.c', line 1223

static VALUE
curses_tabsize_get(VALUE ojb)
{
    return INT2NUM(TABSIZE);
}

.TABSIZE=(val) ⇒ Object



1209
1210
1211
1212
1213
1214
# File 'ext/curses/curses.c', line 1209

static VALUE
curses_tabsize_set(VALUE obj, VALUE val)
{
    TABSIZE = NUM2INT(val);
    return INT2NUM(TABSIZE);
}

.terminal_encodingObject



4845
4846
4847
4848
4849
# File 'ext/curses/curses.c', line 4845

static VALUE
curses_get_terminal_encoding(VALUE obj)
{
    return rb_enc_from_encoding(terminal_encoding);
}

.terminal_encoding=(enc) ⇒ Object



4857
4858
4859
4860
4861
4862
# File 'ext/curses/curses.c', line 4857

static VALUE
curses_set_terminal_encoding(VALUE obj, VALUE enc)
{
    terminal_encoding = rb_to_encoding(enc);
    return enc;
}

.timeout=(delay) ⇒ Object



1710
1711
1712
1713
1714
1715
1716
# File 'ext/curses/curses.c', line 1710

static VALUE
curses_timeout(VALUE obj, VALUE delay)
{
    curses_stdscr();
    timeout(NUM2INT(delay));
    return Qnil;
}

.unget_char(ch) ⇒ Object



4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
# File 'ext/curses/curses.c', line 4873

static VALUE
curses_unget_char(VALUE obj, VALUE ch)
{
    ID id_ord;
    unsigned int c;

    curses_stdscr();
    if (FIXNUM_P(ch)) {
	ungetch(NUM2UINT(ch));
    }
    else {
	StringValue(ch);
	CONST_ID(id_ord, "ord");
	c = NUM2UINT(rb_funcall(ch, id_ord, 0));
#ifdef HAVE_UNGET_WCH
	unget_wch(c);
#else
	if (c > 0xff) {
	    rb_raise(rb_eRangeError, "Out of range: %u", c);
	}
	ungetch(c);
#endif
    }
    return Qnil;
}

.ungetch(ch) ⇒ Object



711
712
713
714
715
716
717
718
# File 'ext/curses/curses.c', line 711

static VALUE
curses_ungetch(VALUE obj, VALUE ch)
{
    int c = curses_char(ch);
    curses_stdscr();
    ungetch(c);
    return Qnil;
}

.ungetmouse(mevent) ⇒ Object



1606
1607
1608
1609
1610
1611
1612
1613
1614
# File 'ext/curses/curses.c', line 1606

static VALUE
curses_ungetmouse(VALUE obj, VALUE mevent)
{
    struct mousedata *mdata;

    curses_stdscr();
    GetMOUSE(mevent,mdata);
    return (ungetmouse(mdata->mevent) == OK) ? Qtrue : Qfalse;
}

.use_default_colorsObject



1174
1175
1176
1177
1178
1179
1180
# File 'ext/curses/curses.c', line 1174

static VALUE
curses_use_default_colors(VALUE obj)
{
    curses_stdscr();
    use_default_colors();
    return Qnil;
}