Class: Curses::Form

Inherits:
Data
  • 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.



4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
# File 'ext/curses/curses.c', line 4212

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

    Check_Type(fields, T_ARRAY);
    curses_init_screen();
    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.



4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
# File 'ext/curses/curses.c', line 4294

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.



4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
# File 'ext/curses/curses.c', line 4252

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.



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

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.



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

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.



4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
# File 'ext/curses/curses.c', line 4331

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.



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

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