Class: Curses::Form

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

Instance Method Summary collapse

Constructor Details

#initialize(fields) ⇒ Object

call-seq:

new(fields)

Construct a new Curses::Form.


4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
# File 'ext/curses/curses.c', line 4232

static VALUE
form_initialize(VALUE obj, VALUE fields)
{
    struct formdata *formp;
    FIELD **form_fields;
    int i;

    Check_Type(fields, T_ARRAY);
    curses_init_screen(Qnil);
    TypedData_Get_Struct(obj, struct formdata, &formdata_type, formp);
    if (formp->form) {
	rb_raise(rb_eRuntimeError, "already initialized form");
    }
    formp->fields = rb_ary_new();
    form_fields = ALLOC_N(FIELD *, RARRAY_LEN(fields) + 1);
    for (i = 0; i < RARRAY_LEN(fields); i++) {
	VALUE field = RARRAY_AREF(fields, i);
	struct fielddata *fieldp;

	GetFIELD(field, fieldp);
	form_fields[i] = fieldp->field;
	rb_ary_push(formp->fields, field);
    }
    form_fields[RARRAY_LEN(fields)] = NULL;
    formp->form = new_form(form_fields);
    if (formp->form == NULL) {
	check_curses_error(errno);
    }

    return obj;
}

Instance Method Details

#driver(command) ⇒ Object

call-seq:

driver(command)

Perform the command on the form.


4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
# File 'ext/curses/curses.c', line 4314

static VALUE
form_driver_m(VALUE obj, VALUE command)
{
    struct formdata *formp;
    int error, c;

    GetFORM(obj, formp);
    if (FIXNUM_P(command)) {
	c = NUM2INT(command);
    }
    else {
	ID id_ord;

	StringValue(command);
	CONST_ID(id_ord, "ord");
	c = NUM2INT(rb_funcall(command, id_ord, 0));
    }
#ifdef HAVE_FORM_DRIVER_W
    error = form_driver_w(formp->form,
			  FIXNUM_P(command) ? KEY_CODE_YES : OK,
			  c);
#else
    error = form_driver(formp->form, c);
#endif
    check_curses_error(error);

    return obj;
}

#postObject

call-seq:

post

Post the form.


4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
# File 'ext/curses/curses.c', line 4272

static VALUE
form_post(VALUE obj)
{
    struct formdata *formp;
    int error;

    GetFORM(obj, formp);
    error = post_form(formp->form);
    check_curses_error(error);

    return obj;
}

#scaleObject

call-seq:

scale

Return the minimum rows and columns required for the subwindow of the form.


4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
# File 'ext/curses/curses.c', line 4391

static VALUE
form_scale(VALUE obj)
{
    struct formdata *formp;
    int error, rows, columns;

    GetFORM(obj, formp);
    error = scale_form(formp->form, &rows, &columns);
    check_curses_error(error);
    return rb_assoc_new(INT2NUM(rows), INT2NUM(columns));
}

#set_sub(win) ⇒ Object

call-seq:

set_sub=(win)

Set the subwindow of the form.


4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
# File 'ext/curses/curses.c', line 4371

static VALUE
form_set_sub(VALUE obj, VALUE win)
{
    struct formdata *formp;
    struct windata *winp;

    GetFORM(obj, formp);
    GetWINDOW(win, winp);
    set_form_sub(formp->form, winp->window);
    return win;
}

#set_win(win) ⇒ Object

call-seq:

set_win=(win)

Set the window of the form.


4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
# File 'ext/curses/curses.c', line 4351

static VALUE
form_set_win(VALUE obj, VALUE win)
{
    struct formdata *formp;
    struct windata *winp;

    GetFORM(obj, formp);
    GetWINDOW(win, winp);
    set_form_win(formp->form, winp->window);
    return win;
}

#unpostObject

call-seq:

unpost

Unpost the form.


4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
# File 'ext/curses/curses.c', line 4293

static VALUE
form_unpost(VALUE obj)
{
    struct formdata *formp;
    int error;

    GetFORM(obj, formp);
    error = unpost_form(formp->form);
    check_curses_error(error);

    return obj;
}