class Newt::Grid

Public Class Methods

new(p1, p2) click to toggle source
static VALUE rb_ext_Grid_new(VALUE self, VALUE cols, VALUE rows)
{
  newtGrid grid;
  VALUE widget;
  int num_cols, num_rows;

  num_cols = NUM2INT(cols);
  num_rows = NUM2INT(rows);

  if (num_cols <= 0 || num_rows <= 0)
    rb_raise(rb_eRuntimeError, "specified number of columns or rows should be greater than 0");

  INIT_GUARD();
  grid = newtCreateGrid(num_cols, num_rows);
  widget = Data_Wrap_Struct(self, 0, 0, grid);
  rb_ivar_set(widget, IVAR_COLS, cols);
  rb_ivar_set(widget, IVAR_ROWS, rows);
  return widget;
}

Public Instance Methods

get_size() click to toggle source
static VALUE rb_ext_Grid_GetSize(VALUE self)
{
  newtGrid grid;
  int width, height;

  INIT_GUARD();
  Data_Get_Struct(self, struct grid_s, grid);
  newtGridGetSize(grid, &width, &height);
  return rb_ary_new_from_args(2, INT2NUM(width), INT2NUM(height));
}
set_field(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) click to toggle source
static VALUE rb_ext_Grid_SetField(VALUE self, VALUE col, VALUE row, VALUE type, VALUE val,
    VALUE padLeft, VALUE padTop, VALUE padRight, VALUE padBottom, VALUE anchor, VALUE flags)
{
  newtGrid grid;
  void *co;
  int icol, irow, itype, cols, rows;

  icol = NUM2INT(col);
  irow = NUM2INT(row);
  itype = NUM2INT(type);

  cols = NUM2INT(rb_ivar_get(self, IVAR_COLS));
  rows = NUM2INT(rb_ivar_get(self, IVAR_ROWS));
  if (icol >= cols || irow >= rows)
    rb_raise(rb_eRuntimeError, "attempting to set a field at an invalid position (%d, %d)", icol, irow);

  INIT_GUARD();
  if (itype == NEWT_GRID_SUBGRID) {
    Data_Get_Struct(val, struct grid_s, co);
  } else {
    Get_Widget_Data(val, co);
    co = ((Widget_data *) co)->co;
  }

  Data_Get_Struct(self, struct grid_s, grid);
  newtGridSetField(grid, icol, irow, itype, co, NUM2INT(padLeft),
                   NUM2INT(padTop), NUM2INT(padRight), NUM2INT(padBottom),
                   NUM2INT(anchor), NUM2INT(flags));

  return Qnil;
}
wrapped_window(*args) click to toggle source
static VALUE rb_ext_Grid_WrappedWindow(int argc, VALUE *argv, VALUE self)
{
  newtGrid grid;
  char *title;

  if (argc != 1 && argc != 3)
    ARG_ERROR(argc, "1 or 3");

  INIT_GUARD();
  title = StringValuePtr(argv[0]);
  Data_Get_Struct(self, struct grid_s, grid);
  if (argc == 1) {
    newtGridWrappedWindow(grid, title);
  } else if (argc == 3) {
    newtGridWrappedWindowAt(grid, title, NUM2INT(argv[1]), NUM2INT(argv[2]));
  }
  return Qnil;
}