Ejemplo n.º 1
0
Archivo: app.c Proyecto: gensym/shoes
VALUE
shoes_app_window(int argc, VALUE *argv, VALUE self, VALUE owner)
{
  rb_arg_list args;
  VALUE attr = Qnil;
  VALUE app = shoes_app_new(self == cDialog ? cDialog : cApp);
  shoes_app *app_t;
  char *url = "/";
  Data_Get_Struct(app, shoes_app, app_t);

  switch (rb_parse_args(argc, argv, "h,s|h,", &args))
  {
    case 1:
      attr = args.a[0];
    break;

    case 2:
      url = RSTRING_PTR(args.a[0]);
      attr = args.a[1];
    break;
  }

  if (rb_block_given_p()) rb_iv_set(app, "@main_app", rb_block_proc());
  app_t->owner = owner;
  app_t->title = ATTR(attr, title);
  app_t->resizable = (ATTR(attr, resizable) != Qfalse);
  app_t->hidden = (ATTR(attr, hidden) == Qtrue);
  shoes_app_resize(app_t, ATTR2(int, attr, width, SHOES_APP_WIDTH), ATTR2(int, attr, height, SHOES_APP_HEIGHT));
  shoes_canvas_init(app_t->canvas, app_t->slot, attr, app_t->width, app_t->height);
  if (shoes_world->mainloop)
    shoes_app_open(app_t, url);
  return app;
}
Ejemplo n.º 2
0
VALUE
shoes_canvas_timer(int argc, VALUE *argv, VALUE self)
{
  rb_arg_list args;
  VALUE timer;
  SETUP();

  rb_parse_args(argc, argv, "|I&", &args);
  timer = shoes_timer_new(cTimer, args.a[0], args.a[1], self);
  rb_ary_push(canvas->app->extras, timer);
  return timer;
}
Ejemplo n.º 3
0
VALUE
shoes_canvas_every(int argc, VALUE *argv, VALUE self)
{
  rb_arg_list args;
  VALUE ev;
  SETUP();

  rb_parse_args(argc, argv, "|F&", &args);
  ev = shoes_timer_new(cEvery, args.a[0], args.a[1], self);
  rb_ary_push(canvas->app->extras, ev);
  return ev;
}
Ejemplo n.º 4
0
VALUE
shoes_canvas_animate(int argc, VALUE *argv, VALUE self)
{
  rb_arg_list args;
  VALUE anim;
  SETUP();

  rb_parse_args(argc, argv, "|I&", &args);
  anim = shoes_timer_new(cAnim, args.a[0], args.a[1], self);
  rb_ary_push(canvas->app->extras, anim);
  return anim;
}
Ejemplo n.º 5
0
VALUE
shoes_canvas_video(int argc, VALUE *argv, VALUE self)
{
#ifdef VIDEO
  VALUE video;
  rb_arg_list args;
  SETUP();

  rb_parse_args(argc, argv, "s|h", &args);
  video = shoes_video_new(cVideo, args.a[0], args.a[1], self);
  shoes_add_ele(canvas, video);
  return video;
#else
  rb_raise(eNotImpl, "no video support");
#endif
}
Ejemplo n.º 6
0
VALUE
shoes_canvas_image(int argc, VALUE *argv, VALUE self)
{
  rb_arg_list args;
  VALUE path = Qnil, attr = Qnil, _w, _h, image;

  switch (rb_parse_args(argc, argv, "ii|h,s|h,|h", &args))
  {
    case 1:
      _w = args.a[0];
      _h = args.a[1];
      attr = args.a[2];
      ATTRSET(attr, width, _w);
      ATTRSET(attr, height, _h);
      if (rb_block_given_p()) ATTRSET(attr, draw, rb_block_proc());
    break;

    case 2:
      path = args.a[0];
      attr = args.a[1];
      if (rb_block_given_p()) ATTRSET(attr, click, rb_block_proc());
    break;

    case 3:
      attr = args.a[0];
      if (rb_block_given_p()) ATTRSET(attr, draw, rb_block_proc());
    break;
  }

  if (rb_obj_is_kind_of(self, cImage))
  {
    shoes_image_image(self, path, attr);
    return self;
  }

  SETUP();
  image = shoes_image_new(cImage, path, attr, self, canvas->st);
  shoes_add_ele(canvas, image);

  return image;
}
Ejemplo n.º 7
0
VALUE shoes_canvas_style(int argc, VALUE *argv, VALUE self) {
    rb_arg_list args;
    SETUP_CANVAS();

    switch (rb_parse_args(argc, argv, "kh,h,", &args)) {
        case 1:
            shoes_app_style(canvas->app, args.a[0], args.a[1]);
            break;

        case 2:
            if (NIL_P(canvas->attr)) canvas->attr = rb_hash_new();
            rb_funcall(canvas->attr, s_update, 1, args.a[0]);
            shoes_canvas_repaint_all(canvas->parent);
            break;

        case 3:
            return rb_obj_freeze(rb_obj_dup(canvas->attr));
    }

    return self;
}
Ejemplo n.º 8
0
Archivo: menu.c Proyecto: Shoes3/shoes3
// canvas - Shoes usage:  menu "Help"
VALUE shoes_canvas_menu(int argc, VALUE *argv, VALUE self) {
    rb_arg_list args;
    VALUE text = Qnil, attr = Qnil, menu;
    

    switch (rb_parse_args(argc, argv, "s|h,|h", &args)) {
        case 1:
            text = args.a[0];
            attr = args.a[1];
            break;

        case 2:
            attr = args.a[0];
            break;
    }

    if (!NIL_P(text))
        ATTRSET(attr, text, text);
    menu = shoes_menu_new(text);
    
    return menu;
}