void dt_lua_lib_register(lua_State *L, dt_lib_module_t *module) { dt_lua_module_entry_new_singleton(L, "lib", module->plugin_name, module); int my_type = dt_lua_module_entry_get_type(L, "lib", module->plugin_name); dt_lua_type_register_parent_type(L, my_type, luaA_type_find(L, "dt_lib_module_t")); lua_pushcfunction(L, lib_tostring); dt_lua_type_setmetafield_type(L,my_type,"__tostring"); };
void dt_lua_register_format_type(lua_State* L, dt_imageio_module_format_t* module, luaA_Type type_id) { dt_lua_type_register_parent_type(L,type_id,luaA_type_find(L,"dt_imageio_module_format_t")); luaL_getmetatable(L,luaA_typename(L,type_id)); lua_pushlightuserdata(L,module); lua_setfield(L,-2,"__associated_object"); lua_pop(L,1); // pop the metatable // add to the table lua_pushlightuserdata(L,module); lua_pushcclosure(L,get_format_params,1); dt_lua_register_module_entry(L,-1,"format",module->plugin_name); lua_pop(L,1); };
luaA_Type dt_lua_init_widget_type_type(lua_State *L, dt_lua_widget_type_t* widget_type,const char* lua_type,GType gtk_type) { luaA_Type type_id = dt_lua_init_gpointer_type_type(L,luaA_type_add(L,lua_type,sizeof(gpointer))); widget_type->associated_type = type_id; widget_type->gtk_type = gtk_type; dt_lua_type_register_parent_type(L, type_id, widget_type->parent->associated_type); lua_newtable(L); dt_lua_type_setmetafield_type(L,type_id,"__gtk_signals"); // add to the table lua_pushlightuserdata(L, widget_type); lua_pushcclosure(L, get_widget_params, 1); lua_pushcclosure(L,dt_lua_gtk_wrap,1); dt_lua_module_entry_new(L, -1, "widget", widget_type->name); lua_pop(L, 1); return type_id; };