static void load_script(const char *name) { struct stat st; int rc; updatecontext(); if (!name) return; if (stat(name, &st) < 0) { myruby_loaded = -1; outerror(OUTERROR_TYPE_WARN_LOUD, "cannot access '%s', ignoring: %s", name, strerror(errno)); return; } ruby_script(name); myruby_time = st.st_mtime; rb_load_protect(rb_str_new(name, strlen(name)), 0, &rc); if (rc != 0) { outerror(OUTERROR_TYPE_WARN_LOUD, "ruby_exec failed with %d: %s", rc, strerror(errno)); myruby_loaded = 1; return; } myruby_loaded = 1; oIrofferEvent = rb_class_new_instance(0, NULL, cIrofferEvent); rb_define_variable("objIrofferEvent", &oIrofferEvent); /* NOTRANSLATE */ }
VALUE makeProtectedCall(const std::string &t_functionName, std::vector<VALUE> &t_params) { // we go through all of this because we cannot rb_protect a call to // rb_funcall. At least not in any way I can find. std::stringstream params; for (size_t i = 0; i < t_params.size(); ++i) { std::stringstream ss; ss << "$embedded_ruby_param_" << i; rb_define_variable(ss.str().c_str(), &t_params[i]); params << ss.str(); if (i < t_params.size() - 1) { params << ", "; } } std::string funcall = "$embedded_ruby_return = " + t_functionName + "(" + params.str() + ")"; evalString(funcall); VALUE retval = rb_gv_get("$embedded_ruby_return"); return retval; }
static VALUE method_to_s(VALUE self) { if (check_connection(self)) { VALUE array = method_all_inputs(self); rb_define_variable("arry", &array); return rb_eval_string("$arry.join(';')"); } }
static void Init_SysInfo() { hardware_list = rb_ary_new(); rb_global_variable(&hardware_list); rb_define_variable("$hardware", &hardware_list); rb_ary_push(hardware_list, rb_str_new2("DVD")); rb_ary_push(hardware_list, rb_str_new2("CDP1")); }
static VALUE sb_define_variable(VALUE self, VALUE var_name, VALUE val) { g_var = val; rb_define_variable(StringValuePtr(var_name), &g_var); return Qnil; }
Map::Map() { tiles = Qnil; rb_define_variable("tiles", &tiles); }
// // Everything exposed to Ruby is exposed here. // void shoes_ruby_init() { progname = rb_str_new2("(eval)"); rb_define_variable("$0", &progname); rb_define_variable("$PROGRAM_NAME", &progname); instance_eval_proc = rb_eval_string("lambda{|o,b| o.instance_eval(&b)}"); rb_gc_register_address(&instance_eval_proc); ssNestSlot = rb_eval_string("{:height => 1.0}"); rb_gc_register_address(&ssNestSlot); s_aref = rb_intern("[]="); s_perc = rb_intern("%"); s_mult = rb_intern("*"); SYMBOL_DEFS(SYMBOL_INTERN); symAltQuest = ID2SYM(rb_intern("alt_?")); symAltSlash = ID2SYM(rb_intern("alt_/")); symAltEqual = ID2SYM(rb_intern("alt_=")); symAltDot = ID2SYM(rb_intern("alt_.")); symAltSemiColon = ID2SYM(rb_intern("alt_;")); // // I want all elements to be addressed Shoes::Name, but also available in // a separate mixin (cTypes), for inclusion in every Shoes.app block. // cTypes = rb_define_module("Shoes"); rb_mod_remove_const(rb_cObject, rb_str_new2("Shoes")); cShoesWindow = rb_define_class_under(cTypes, "Window", rb_cObject); cMouse = rb_define_class_under(cTypes, "Mouse", rb_cObject); cCanvas = rb_define_class_under(cTypes, "Canvas", rb_cObject); rb_define_alloc_func(cCanvas, shoes_canvas_alloc); rb_define_method(cCanvas, "top", CASTHOOK(shoes_canvas_get_top), 0); rb_define_method(cCanvas, "left", CASTHOOK(shoes_canvas_get_left), 0); rb_define_method(cCanvas, "width", CASTHOOK(shoes_canvas_get_width), 0); rb_define_method(cCanvas, "height", CASTHOOK(shoes_canvas_get_height), 0); rb_define_method(cCanvas, "scroll_height", CASTHOOK(shoes_canvas_get_scroll_height), 0); rb_define_method(cCanvas, "scroll_max", CASTHOOK(shoes_canvas_get_scroll_max), 0); rb_define_method(cCanvas, "scroll_top", CASTHOOK(shoes_canvas_get_scroll_top), 0); rb_define_method(cCanvas, "scroll_top=", CASTHOOK(shoes_canvas_set_scroll_top), 1); rb_define_method(cCanvas, "displace", CASTHOOK(shoes_canvas_displace), 2); rb_define_method(cCanvas, "move", CASTHOOK(shoes_canvas_move), 2); rb_define_method(cCanvas, "style", CASTHOOK(shoes_canvas_style), -1); rb_define_method(cCanvas, "parent", CASTHOOK(shoes_canvas_get_parent), 0); rb_define_method(cCanvas, "contents", CASTHOOK(shoes_canvas_contents), 0); rb_define_method(cCanvas, "children", CASTHOOK(shoes_canvas_children), 0); rb_define_method(cCanvas, "draw", CASTHOOK(shoes_canvas_draw), 2); rb_define_method(cCanvas, "hide", CASTHOOK(shoes_canvas_hide), 0); rb_define_method(cCanvas, "show", CASTHOOK(shoes_canvas_show), 0); rb_define_method(cCanvas, "toggle", CASTHOOK(shoes_canvas_toggle), 0); rb_define_method(cCanvas, "remove", CASTHOOK(shoes_canvas_remove), 0); rb_define_method(cCanvas, "refresh_slot", CASTHOOK(shoes_canvas_refresh_slot), 0); rb_define_method(cCanvas, "refresh", CASTHOOK(shoes_canvas_refresh_slot), 0); rb_define_method(cCanvas, "cursor", CASTHOOK(shoes_canvas_get_cursor), 0); rb_define_method(cCanvas, "cursor=", CASTHOOK(shoes_canvas_set_cursor), 1); cShoes = rb_define_class("Shoes", cCanvas); rb_include_module(cShoes, cTypes); rb_const_set(cShoes, rb_intern("Types"), cTypes); shoes_version_init(); // other Shoes:: constants rb_const_set(cTypes, rb_intern("RAD2PI"), rb_float_new(SHOES_RAD2PI)); rb_const_set(cTypes, rb_intern("TWO_PI"), rb_float_new(SHOES_PIM2)); rb_const_set(cTypes, rb_intern("HALF_PI"), rb_float_new(SHOES_HALFPI)); rb_const_set(cTypes, rb_intern("PI"), rb_float_new(SHOES_PI)); cApp = rb_define_class_under(cTypes, "App", rb_cObject); rb_define_alloc_func(cApp, shoes_app_alloc); rb_define_method(cApp, "fullscreen", CASTHOOK(shoes_app_get_fullscreen), 0); rb_define_method(cApp, "fullscreen=", CASTHOOK(shoes_app_set_fullscreen), 1); rb_define_method(cApp, "name", CASTHOOK(shoes_app_get_title), 0); rb_define_method(cApp, "name=", CASTHOOK(shoes_app_set_title), 1); rb_define_method(cApp, "location", CASTHOOK(shoes_app_location), 0); rb_define_method(cApp, "started?", CASTHOOK(shoes_app_is_started), 0); rb_define_method(cApp, "left", CASTHOOK(shoes_app_get_window_x_position), 0); rb_define_method(cApp, "top", CASTHOOK(shoes_app_get_window_y_position), 0); rb_define_method(cApp, "move", CASTHOOK(shoes_app_set_window_position), 2); rb_define_method(cApp, "width", CASTHOOK(shoes_app_get_width), 0); rb_define_method(cApp, "height", CASTHOOK(shoes_app_get_height), 0); rb_define_method(cApp, "resize", CASTHOOK(shoes_app_resize_window), 2); rb_define_method(cApp, "resizable", CASTHOOK(shoes_app_get_resizable), 0); rb_define_method(cApp, "resizable=", CASTHOOK(shoes_app_set_resizable), 1); rb_define_method(cApp, "slot", CASTHOOK(shoes_app_slot), 0); rb_define_method(cApp, "set_window_icon_path", CASTHOOK(shoes_app_set_icon), 1); // New in 3.2.19 rb_define_method(cApp, "set_window_title", CASTHOOK(shoes_app_set_wtitle), 1); // New in 3.2.19 rb_define_method(cApp, "opacity", CASTHOOK(shoes_app_get_opacity), 0); rb_define_method(cApp, "opacity=", CASTHOOK(shoes_app_set_opacity), 1); rb_define_method(cApp, "decorated", CASTHOOK(shoes_app_get_decoration), 0); rb_define_method(cApp, "decorated=", CASTHOOK(shoes_app_set_decoration), 1); rb_define_alias(cApp, "decorated?", "decorated"); rb_define_method(cApp, "cache", CASTHOOK(shoes_app_get_cache), 0); rb_define_method(cApp, "cache=", CASTHOOK(shoes_app_set_cache), 1); rb_define_method(cApp, "cache_clear", CASTHOOK(shoes_app_clear_cache), 1); rb_define_method(cApp, "event=", CASTHOOK(shoes_app_set_event_handler), 1); rb_define_method(cApp, "replay_event", CASTHOOK(shoes_app_replay_event), 1); rb_define_method(cApp, "monitor", CASTHOOK(shoes_app_monitor_get), 0); rb_define_method(cApp, "monitor=", CASTHOOK(shoes_app_monitor_set), 1); rb_define_method(cApp, "id", CASTHOOK(shoes_app_id), 0); /* Settings holds global values, not per app values. Part of shoes_world_t */ cSettings = rb_define_class_under(cTypes, "Settings", rb_cObject); rb_define_alloc_func(cSettings, shoes_settings_alloc); rb_define_method(cSettings, "dbus", CASTHOOK(shoes_settings_dbus),0); rb_define_method(cSettings, "app_name", CASTHOOK(shoes_settings_app_name),0); rb_define_method(cSettings, "app_name=", CASTHOOK(shoes_settings_set_app_name),1); rb_define_method(cSettings, "icon_path", CASTHOOK(shoes_settings_app_icon),0); rb_define_method(cSettings, "icon_path=", CASTHOOK(shoes_settings_set_app_icon),1); rb_define_method(cSettings, "theme", CASTHOOK(shoes_settings_get_theme),0); rb_define_method(cSettings, "theme=", CASTHOOK(shoes_settings_set_theme),1); rb_define_method(cSettings, "mdi", CASTHOOK(shoes_settings_mdi),0); rb_define_method(cSettings, "use_menus", CASTHOOK(shoes_settings_menu),0); rb_define_method(cSettings, "rdomain", CASTHOOK(shoes_settings_rdomain),0); rb_define_method(cSettings, "rdomain=", CASTHOOK(shoes_settings_set_rdomain),1); rb_define_method(cSettings, "monitor_count", CASTHOOK(shoes_settings_monitor_count),0); rb_define_method(cSettings, "monitor_geometry", CASTHOOK(shoes_settings_monitor_geometry),1); rb_define_method(cSettings, "monitor_default", CASTHOOK(shoes_settings_monitor_default), 0); rb_define_method(cSettings, "extra1", CASTHOOK(shoes_setting_extra1), 0); rb_define_method(cSettings, "extra2", CASTHOOK(shoes_setting_extra2), 0); rb_define_method(cSettings, "wintmo", CASTHOOK(shoes_setting_get_wintmo), 0); rb_define_method(cSettings, "wintmo=", CASTHOOK(shoes_setting_set_wintmo), 1); rb_define_method(cSettings, "display_backend", CASTHOOK(shoes_setting_display_backend), 0); cDialog = rb_define_class_under(cTypes, "Dialog", cApp); eInvMode = rb_define_class_under(cTypes, "InvalidModeError", rb_eStandardError); eNotImpl = rb_define_class_under(cTypes, "NotImplementedError", rb_eStandardError); eImageError = rb_define_class_under(cTypes, "ImageError", rb_eStandardError); C(HEX_SOURCE, "/^(?:0x|#)?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i"); C(HEX3_SOURCE, "/^(?:0x|#)?([0-9A-F])([0-9A-F])([0-9A-F])$/i"); C(RGB_SOURCE, "/^rgb\\((\\d+), *(\\d+), *(\\d+)\\)$/i"); C(RGBA_SOURCE, "/^rgb\\((\\d+), *(\\d+), *(\\d+), *(\\d+)\\)$/i"); C(GRAY_SOURCE, "/^gray\\((\\d+)\\)$/i"); C(GRAYA_SOURCE, "/^gray\\((\\d+), *(\\d+)\\)$/i"); C(LF, "/\\r?\\n/"); rb_eval_string( "def Shoes.escape(string);" "string.gsub(/&/n, '&').gsub(/\\\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<');" "end" ); rb_define_singleton_method(cShoes, "APPS", CASTHOOK(shoes_apps_get), 0); rb_define_singleton_method(cShoes, "app", CASTHOOK(shoes_app_main), -1); rb_define_singleton_method(cShoes, "p", CASTHOOK(shoes_p), 1); rb_define_singleton_method(cShoes, "log", CASTHOOK(shoes_log), 0); rb_define_singleton_method(cShoes, "show_console", CASTHOOK(shoes_app_console), 0); // New in 3.2.23 rb_define_singleton_method(cShoes, "terminal", CASTHOOK(shoes_app_terminal), -1); // New in 3.3.2 replaces console rb_define_singleton_method(cShoes, "quit", CASTHOOK(shoes_app_quit), 0); // Shoes 3.3.2 rb_define_singleton_method(cShoes, "settings", CASTHOOK(shoes_app_settings), 0); // Shoes 3.3.7 //rb_define_singleton_method(cShoes, "exit", CASTHOOK(shoes_app_quit), 0); // // Canvas methods // See ruby.h for the complete list of Canvas method signatures. // Macros are used to build App redirection methods, which should be // speedier than method_missing. // CANVAS_DEFS(RUBY_M); // // Shoes Kernel methods // //rb_define_method(rb_mKernel, "quit", CASTHOOK(shoes_app_quit), 0); //rb_define_method(rb_mKernel, "exit", CASTHOOK(shoes_app_quit), 0); rb_define_method(rb_mKernel, "secret_exit_hook", CASTHOOK(shoes_exit_setup),0); //unused? rb_define_method(rb_mKernel, "debug", CASTHOOK(shoes_canvas_debug), 1); rb_define_method(rb_mKernel, "info", CASTHOOK(shoes_canvas_info), 1); rb_define_method(rb_mKernel, "warn", CASTHOOK(shoes_canvas_warn), 1); rb_define_method(rb_mKernel, "error", CASTHOOK(shoes_canvas_error), 1); cFlow = rb_define_class_under(cTypes, "Flow", cShoes); cStack = rb_define_class_under(cTypes, "Stack", cShoes); cMask = rb_define_class_under(cTypes, "Mask", cShoes); cWidget = rb_define_class_under(cTypes, "Widget", cShoes); rb_define_method(cApp, "method_missing", CASTHOOK(shoes_app_method_missing), -1); rb_define_method(rb_mKernel, "alert", CASTHOOK(shoes_dialog_alert), -1); rb_define_method(rb_mKernel, "ask", CASTHOOK(shoes_dialog_ask), -1); rb_define_method(rb_mKernel, "confirm", CASTHOOK(shoes_dialog_confirm), -1); rb_define_method(rb_mKernel, "ask_color", CASTHOOK(shoes_dialog_color), 1); rb_define_method(rb_mKernel, "ask_open_file", CASTHOOK(shoes_dialog_open), -1); rb_define_method(rb_mKernel, "ask_save_file", CASTHOOK(shoes_dialog_save), -1); rb_define_method(rb_mKernel, "ask_open_folder", CASTHOOK(shoes_dialog_open_folder), -1); rb_define_method(rb_mKernel, "ask_save_folder", CASTHOOK(shoes_dialog_save_folder), -1); rb_define_method(rb_mKernel, "font", CASTHOOK(shoes_font), 1); SHOES_TYPES_INIT; }
void addObject(const std::string &t_objectName, ObjectType *t_obj) { VALUE r_obj = SWIG_NewPointerObj(t_obj, getTypeInfo<ObjectType *>(), 0); rb_define_variable(t_objectName.c_str(), &r_obj); }