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