Class: Curses::Field

Inherits:
Data
  • Object
show all
Defined in:
ext/curses/curses.c

Instance Method Summary collapse

Constructor Details

#initialize(height, width, toprow, leftcol, offscreen, nbuffers) ⇒ Object

call-seq:

new(height, width, toprow, leftcol, offscreen, nbuffers)

Construct a new Curses::Field.



3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
# File 'ext/curses/curses.c', line 3756

static VALUE
field_initialize(VALUE obj, VALUE height, VALUE width,
		 VALUE toprow, VALUE leftcol, VALUE offscreen, VALUE nbuffers)
{
    struct fielddata *fieldp;

    curses_init_screen();
    TypedData_Get_Struct(obj, struct fielddata, &fielddata_type, fieldp);
    if (fieldp->field) {
	rb_raise(rb_eRuntimeError, "already initialized field");
    }
    fieldp->field = new_field(NUM2INT(height), NUM2INT(width),
			      NUM2INT(toprow), NUM2INT(leftcol),
			      NUM2INT(offscreen), NUM2INT(nbuffers));
    if (fieldp->field == NULL) {
	check_curses_error(errno);
    }

    return obj;
}

Instance Method Details

#backObject

call-seq:

back

Get the background attribute of the field.



3879
3880
3881
3882
3883
3884
3885
3886
# File 'ext/curses/curses.c', line 3879

static VALUE
field_get_back(VALUE obj)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    return CHTYPE2NUM(field_back(fieldp->field));
}

#back=(attr) ⇒ Object

call-seq:

set_back(attr)

Set the background attribute of the field.



3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
# File 'ext/curses/curses.c', line 3860

static VALUE
field_set_back(VALUE obj, VALUE attr)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    set_field_back(fieldp->field, NUM2CHTYPE(attr));

    return attr;
}

#buffer(buf) ⇒ Object

call-seq:

buffer(buf)

Get the numbered buffer of the field.



3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
# File 'ext/curses/curses.c', line 3805

static VALUE
field_buffer_m(VALUE obj, VALUE buf)
{
    struct fielddata *fieldp;
    char *s;

    GetFIELD(obj, fieldp);
    s = field_buffer(fieldp->field, NUM2INT(buf));
    return rb_external_str_new_with_enc(s, strlen(s), terminal_encoding);
}

#dynamic_heightObject



4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
# File 'ext/curses/curses.c', line 4015

static VALUE
field_dynamic_height(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = dynamic_field_info(fieldp->field, &val, NULL, NULL);
    check_curses_error(error);
    return INT2NUM(val);
}

#dynamic_widthObject



4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
# File 'ext/curses/curses.c', line 4027

static VALUE
field_dynamic_width(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = dynamic_field_info(fieldp->field, NULL, &val, NULL);
    check_curses_error(error);
    return INT2NUM(val);
}

#foreObject

call-seq:

fore

Get the foreground attribute of the field.



3843
3844
3845
3846
3847
3848
3849
3850
# File 'ext/curses/curses.c', line 3843

static VALUE
field_get_fore(VALUE obj)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    return CHTYPE2NUM(field_fore(fieldp->field));
}

#fore=(attr) ⇒ Object

call-seq:

set_fore(attr)

Set the foreground attribute of the field.



3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
# File 'ext/curses/curses.c', line 3824

static VALUE
field_set_fore(VALUE obj, VALUE attr)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    set_field_fore(fieldp->field, NUM2CHTYPE(attr));

    return attr;
}

#heightObject



3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
# File 'ext/curses/curses.c', line 3943

static VALUE
field_height(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = field_info(fieldp->field, &val, NULL, NULL, NULL, NULL, NULL);
    check_curses_error(error);
    return INT2NUM(val);
}

#leftcolObject



3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
# File 'ext/curses/curses.c', line 3979

static VALUE
field_leftcol(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = field_info(fieldp->field, NULL, NULL, NULL, &val, NULL, NULL);
    check_curses_error(error);
    return INT2NUM(val);
}

#maxObject



4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
# File 'ext/curses/curses.c', line 4039

static VALUE
field_max(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = dynamic_field_info(fieldp->field, NULL, NULL, &val);
    check_curses_error(error);
    return INT2NUM(val);
}

#max=(max) ⇒ Object



4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
# File 'ext/curses/curses.c', line 4051

static VALUE
field_set_max(VALUE obj, VALUE max)
{
    struct fielddata *fieldp;
    int error;

    GetFIELD(obj, fieldp);
    error = set_max_field(fieldp->field, NUM2INT(max));
    check_curses_error(error);
    return max;
}

#nbuffersObject



4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
# File 'ext/curses/curses.c', line 4003

static VALUE
field_nbuffers(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = field_info(fieldp->field, NULL, NULL, NULL, NULL, NULL, &val);
    check_curses_error(error);
    return INT2NUM(val);
}

#offscreenObject



3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
# File 'ext/curses/curses.c', line 3991

static VALUE
field_offscreen(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = field_info(fieldp->field, NULL, NULL, NULL, NULL, &val, NULL);
    check_curses_error(error);
    return INT2NUM(val);
}

#optsObject

call-seq:

opts

Get the current option bits.



3934
3935
3936
3937
3938
3939
3940
3941
# File 'ext/curses/curses.c', line 3934

static VALUE
field_opts_m(VALUE obj)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    return INT2NUM(field_opts(fieldp->field));
}

#opts_off(opts) ⇒ Object

call-seq:

opts_off(opts)

Turn off the given option bits.



3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
# File 'ext/curses/curses.c', line 3915

static VALUE
field_opts_off_m(VALUE obj, VALUE opts)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    field_opts_off(fieldp->field, NUM2INT(opts));

    return opts;
}

#opts_on(opts) ⇒ Object

call-seq:

opts_on(opts)

Turn on the given option bits.



3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
# File 'ext/curses/curses.c', line 3896

static VALUE
field_opts_on_m(VALUE obj, VALUE opts)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    field_opts_on(fieldp->field, NUM2INT(opts));

    return opts;
}

#set_back(attr) ⇒ Object

call-seq:

set_back(attr)

Set the background attribute of the field.



3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
# File 'ext/curses/curses.c', line 3860

static VALUE
field_set_back(VALUE obj, VALUE attr)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    set_field_back(fieldp->field, NUM2CHTYPE(attr));

    return attr;
}

#set_buffer(buf, value) ⇒ Object

call-seq:

set_buffer(buf, value)

Set the numbered buffer of the field.



3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
# File 'ext/curses/curses.c', line 3785

static VALUE
field_set_buffer(VALUE obj, VALUE buf, VALUE value)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    value = rb_str_export_to_enc(value, terminal_encoding);
    set_field_buffer(fieldp->field, NUM2INT(buf), StringValueCStr(value));

    return obj;
}

#set_fore(attr) ⇒ Object

call-seq:

set_fore(attr)

Set the foreground attribute of the field.



3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
# File 'ext/curses/curses.c', line 3824

static VALUE
field_set_fore(VALUE obj, VALUE attr)
{
    struct fielddata *fieldp;

    GetFIELD(obj, fieldp);
    set_field_fore(fieldp->field, NUM2CHTYPE(attr));

    return attr;
}

#set_max(max) ⇒ Object



4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
# File 'ext/curses/curses.c', line 4051

static VALUE
field_set_max(VALUE obj, VALUE max)
{
    struct fielddata *fieldp;
    int error;

    GetFIELD(obj, fieldp);
    error = set_max_field(fieldp->field, NUM2INT(max));
    check_curses_error(error);
    return max;
}

#set_type(*args) ⇒ Object



4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
# File 'ext/curses/curses.c', line 4070

static VALUE
field_set_type(int argc, VALUE *argv, VALUE obj)
{
    struct fielddata *fieldp;
    VALUE type;
    int type_code;
    int error;

    if (argc < 1) {
	rb_raise(rb_eArgError,
                 "wrong number of arguments (given %d, expected 1)", argc);
    }
    type_code = NUM2INT(argv[0]);
    GetFIELD(obj, fieldp);
    switch (type_code) {
    case TYPE_CODE_ALPHA:
        {
            VALUE width;
	    rb_scan_args(argc, argv, "11", &type, &width);
	    error = set_field_type(fieldp->field, TYPE_ALPHA,
                                   NIL_P(width) ? 0 : NUM2INT(width));
	}
        break;
    case TYPE_CODE_ALNUM:
        {
            VALUE width;
	    rb_scan_args(argc, argv, "11", &type, &width);
	    error = set_field_type(fieldp->field, TYPE_ALNUM,
                                   NIL_P(width) ? 0 : NUM2INT(width));
	}
        break;
#if 0
    case TYPE_CODE_ENUM:
        {
            /* TODO: consider how valuelist should be allocated? */
	}
        break;
#endif
    case TYPE_CODE_INTEGER:
        {
            VALUE padding, vmin, vmax;
	    rb_scan_args(argc, argv, "13", &type, &padding, &vmin, &vmax);
	    error = set_field_type(fieldp->field, TYPE_INTEGER,
                                   NIL_P(padding) ? 0 : NUM2INT(padding),
                                   NIL_P(vmin) ? INT_MIN : NUM2INT(vmin),
                                   NIL_P(vmax) ? INT_MAX : NUM2INT(vmax));
	}
        break;
    case TYPE_CODE_NUMERIC:
        {
            VALUE padding, vmin, vmax;
	    rb_scan_args(argc, argv, "13", &type, &padding, &vmin, &vmax);
	    error = set_field_type(fieldp->field, TYPE_INTEGER,
                                   NIL_P(padding) ? 0 : NUM2INT(padding),
                                   NIL_P(vmin) ? INT_MIN : NUM2INT(vmin),
                                   NIL_P(vmax) ? INT_MAX : NUM2INT(vmax));
	}
        break;
#if 0
    case TYPE_CODE_REGEXP:
        {
            /* TODO: consider how regexp should be allocated? */
	}
        break;
#endif
    default:
	rb_raise(rb_eArgError, "unknwon type: %d", type_code);
	break;
    }
    check_curses_error(error);
    return obj;
}

#toprowObject



3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
# File 'ext/curses/curses.c', line 3967

static VALUE
field_toprow(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = field_info(fieldp->field, NULL, NULL, &val, NULL, NULL, NULL);
    check_curses_error(error);
    return INT2NUM(val);
}

#widthObject



3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
# File 'ext/curses/curses.c', line 3955

static VALUE
field_width(VALUE obj)
{
    struct fielddata *fieldp;
    int error, val;

    GetFIELD(obj, fieldp);
    error = field_info(fieldp->field, NULL, &val, NULL, NULL, NULL, NULL);
    check_curses_error(error);
    return INT2NUM(val);
}