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.



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

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.



3889
3890
3891
3892
3893
3894
3895
3896
# File 'ext/curses/curses.c', line 3889

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.



3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
# File 'ext/curses/curses.c', line 3870

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.



3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
# File 'ext/curses/curses.c', line 3815

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



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

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



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

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.



3853
3854
3855
3856
3857
3858
3859
3860
# File 'ext/curses/curses.c', line 3853

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.



3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
# File 'ext/curses/curses.c', line 3834

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



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

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



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

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



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

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



4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
# File 'ext/curses/curses.c', line 4061

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



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

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



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

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.



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

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.



3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
# File 'ext/curses/curses.c', line 3925

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.



3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
# File 'ext/curses/curses.c', line 3906

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.



3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
# File 'ext/curses/curses.c', line 3870

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.



3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
# File 'ext/curses/curses.c', line 3795

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.



3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
# File 'ext/curses/curses.c', line 3834

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



4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
# File 'ext/curses/curses.c', line 4061

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



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
4149
4150
4151
# File 'ext/curses/curses.c', line 4080

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



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

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



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

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