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.



3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
# File 'ext/curses/curses.c', line 3763

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.



3886
3887
3888
3889
3890
3891
3892
3893
# File 'ext/curses/curses.c', line 3886

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.



3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
# File 'ext/curses/curses.c', line 3867

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.



3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
# File 'ext/curses/curses.c', line 3812

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



4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
# File 'ext/curses/curses.c', line 4022

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



4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
# File 'ext/curses/curses.c', line 4034

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.



3850
3851
3852
3853
3854
3855
3856
3857
# File 'ext/curses/curses.c', line 3850

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.



3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
# File 'ext/curses/curses.c', line 3831

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



3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
# File 'ext/curses/curses.c', line 3950

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



3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
# File 'ext/curses/curses.c', line 3986

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



4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
# File 'ext/curses/curses.c', line 4046

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



4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
# File 'ext/curses/curses.c', line 4058

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



4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
# File 'ext/curses/curses.c', line 4010

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



3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
# File 'ext/curses/curses.c', line 3998

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.



3941
3942
3943
3944
3945
3946
3947
3948
# File 'ext/curses/curses.c', line 3941

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.



3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
# File 'ext/curses/curses.c', line 3922

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.



3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
# File 'ext/curses/curses.c', line 3903

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.



3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
# File 'ext/curses/curses.c', line 3867

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.



3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
# File 'ext/curses/curses.c', line 3792

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.



3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
# File 'ext/curses/curses.c', line 3831

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



4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
# File 'ext/curses/curses.c', line 4058

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



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
4142
4143
4144
4145
4146
4147
4148
# File 'ext/curses/curses.c', line 4077

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



3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
# File 'ext/curses/curses.c', line 3974

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



3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
# File 'ext/curses/curses.c', line 3962

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);
}